jQuery移动触摸事件处理,此关键字上下文,并正确使用闭包



如果我在这里不是很清楚,请原谅我。我试图通过做一次学到很多东西。

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

$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);
            });   
    }
}
将事件

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

我在想这样的事情:

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

我可以将var帐户发送到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.
}

最新更新