传递$(this)作为bind方法的参数--jQuery

时间:2015-04-21 14:36:08

标签: jquery arguments bind

我想在绑定函数中使用$(this)作为参数。

我希望在someClass发生时绑定元素类someFunc以执行someEvent(已定义的函数)。

someFunc接受参数,一个是作用的元素,element。在这种情况下,我想对发生事件的类someClass中的任何元素采取行动。

所以,我想我会使用$(this),就像绑定函数中的一个参数一样:

$('.someClass').bind('someEvent', {element: $(this)}, someFunc);

但是,尽管对我有意义,但这似乎并不奏效。

如何在绑定方法中使用$(this)或会产生相同结果的内容?

我不想使用以下内容:

$('.someClass').bind('someEvent', function() {
    someFunc($(this));
});

编辑:以我不喜欢的方式尝试

$(document).ready(function() {

    $('.menu-hover').bind('mouseenter', function() {

        hover_true($(this), '#1B4186');

    });

    $('.menu-hover').bind('mouseleave', function() {

        hover_false($(this), '#26519E');

    });

});

function hover_color(element, color) {

    $(element).css('background-color', color);

};

hover_color只是用给定的element为给定的color着色。它根本不起作用,我不明白为什么。

1 个答案:

答案 0 :(得分:1)

问题是,在绑定调用期间,$(this)仍然是另一个上下文,而不是eventHandling时的上下文。您现在可能正在传递文档或其他内容。

我没有看到使用您最不喜欢的方法的方法,因为只有在事件处理本身期间,上下文才被设置为手头的元素。

增加: 实际上也许,因为在你的尝试中'someFunc'是eventHandler,你实际上可以在someFunc的声明中使用$(this),而不需要将它作为参数传递。