gpt4 book ai didi

javascript - jQuery 移动触摸事件处理、this 关键字上下文以及正确使用闭包

转载 作者:行者123 更新时间:2023-11-28 01:50:50 25 4
gpt4 key购买 nike

如果我说得不太清楚,请原谅我。我试图通过实践一次性学到很多东西。

我有一个事件监听器,其中包含多个如下事件:

$account.on({
tap: function() {
accountOpen = true;
ui.openAccount(this);
},
swiperight: etc. etc.
}

我将所有 ui 函数都放在对象文字中。示例:

var ui = PROJECT.ui = {
openAccount: function(account) {
var $account = $(account),
$trans = $('.transactions'),
$closeBtn= $account.find('.close-btn');

$account.removeClass('pay-open').removeClass('move-open');

$trans.appendTo($a)
.slideDown(400,function(){
$closeBtn.fadeIn(100);
});

}
}

将事件目标/this 从事件处理程序发送到 ui.openAccount() 函数而无需重复捕获变量的正确方法是什么? (即我如何停止重复自己?)我使用构造函数吗?带有闭包的帐户对象是否会派上用场?

我在想这样的事情:

var account = (function(){
var acct = {
this.container = $(this),
this.closeBtn = $(this).find('.close-btn')
}
return acct;
}());

我可以将 var account 发送到 ui.openAccount(),但我知道我肯定做得不对。

最佳答案

尝试将事件传递给您正在调用的函数:

$account.on({
tap: function(e) {
var my_cool_new_object = {};
console.log("your event is here")
console.log(e)
accountOpen = true;
// populate your object
my_cool_new_object.target = e.target;
my_cool_new_object.foo = bar;
...
// pass to method
ui.openAccount(my_cool_new_object);
},
swiperight: etc. etc.
}

关于javascript - jQuery 移动触摸事件处理、this 关键字上下文以及正确使用闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com