将 $(this) 作为绑定方法的参数传递 - jQuery
Pass $(this) as argument of bind method - jQuery
我想使用 $(this)
作为绑定函数中的参数。
我想绑定元素someClass
的class在someEvent
发生时执行someFunc
(一个已经定义好的函数)
someFunc
接受参数,其中一个是要作用的元素,element
。在这种情况下,我想对具有 class 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
只是用给定的 color
给给定的 element
上色。它(根本)不起作用,我不知道为什么。
问题是,在绑定调用期间,$(this) 仍然是另一个上下文,而不是事件处理时的上下文。您现在可能正在传递文件或其他东西。
我看不到使用您最不喜欢的方法的方法,因为只有在事件处理本身期间,上下文才会设置为手头的元素。
补充:
实际上也许,因为在你的尝试中 'someFunc' 是 eventHandler,你实际上可以简单地在 someFunc 的声明中使用 $(this),根本不需要将它作为参数传递。
我想使用 $(this)
作为绑定函数中的参数。
我想绑定元素someClass
的class在someEvent
发生时执行someFunc
(一个已经定义好的函数)
someFunc
接受参数,其中一个是要作用的元素,element
。在这种情况下,我想对具有 class 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
只是用给定的 color
给给定的 element
上色。它(根本)不起作用,我不知道为什么。
问题是,在绑定调用期间,$(this) 仍然是另一个上下文,而不是事件处理时的上下文。您现在可能正在传递文件或其他东西。
我看不到使用您最不喜欢的方法的方法,因为只有在事件处理本身期间,上下文才会设置为手头的元素。
补充: 实际上也许,因为在你的尝试中 'someFunc' 是 eventHandler,你实际上可以简单地在 someFunc 的声明中使用 $(this),根本不需要将它作为参数传递。