`hive'方法的`.live()`绑定的正确语法是什么?

时间:2010-08-09 08:29:45

标签: jquery

我们称之为.live()方法:

$('.link').live('click', loadContent);

但是,如果我绑定到hover,而是调用由逗号分隔的两个函数呢?当我提出这个:

$('.thumb.dim').live('hover', function(){$(this).removeClass('dim');}, function(){$(this).addClass('dim');});

mouseenter事件会触发上面的第一个函数(removeClass('dim')),但在mouseleave上没有任何反应。有没有正确的方法来写这个?

3 个答案:

答案 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事件!