1

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

我有一个带有多个事件的事件侦听器,如下所示:

$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 帐户发送到 ui.openAccount(),但我知道我绝对没有做对。

4

1 回答 1

1

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

$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.
}
于 2013-11-01T11:14:10.620 回答