我们称之为.live()
方法:
$('.link').live('click', loadContent);
但是,如果我绑定到hover
,而是调用由逗号分隔的两个函数呢?当我提出这个:
$('.thumb.dim').live('hover', function(){$(this).removeClass('dim');}, function(){$(this).addClass('dim');});
mouseenter
事件会触发上面的第一个函数(removeClass('dim')
),但在mouseleave
上没有任何反应。有没有正确的方法来写这个?
答案 0 :(得分:2)
live
只接受一次回调,但您可以检查传递的事件信息以获取回调类型:
$('.thumb.dim').live('hover', function(e) {
if (e.type == 'mouseover') {
$(this).removeClass('dim');
} else {
$(this).addClass('dim');
}
});
或者,因为你只是删除/添加一个类,你可以这样做;
$('.thumb.dim').live('hover', function(e) {
$(this).toggleClass('dim');
});
答案 1 :(得分:2)
猜猜 - 我不知道jQuery在内部如何做到这一点。
是不是因为它不再暗淡而触发事件?您可以尝试为dim_disabled
添加dim_disabled
类或类似内容以及鼠标移出事件来恢复dim
?
答案 2 :(得分:0)
咄!该函数正在删除触发该函数的类!在'dim'
上移除mouseenter
课程后,this
不再响应mouseout
事件!