取消绑定窗口滚动上的所有鼠标悬停事件

时间:2012-12-13 14:41:52

标签: jquery scroll bind unbind

我试过这段代码:

$(function(){
    $('.media-in').bind('mouseover',function(){
        $(this).children('.media-options').show();
    });
    $('.media-in').bind('mouseout',function(){
        $(this).children('.media-options').hide();
    });
    $(window).on('scroll',function(){
        $('.media-in').unbind('mouseover');
    });
});

它没有按预期工作。我希望unbind当我滚动页面时mouseover上发生的事件,我该怎么做?

此外,有没有办法在页面滚动数组的unbind事件?类似的东西:

$(window).scroll(function(){ 
    $(this).unbind(['mouseover','click','mouseout']);
});

2 个答案:

答案 0 :(得分:2)

从jQuery 1.7开始,off()on()是绑定和取消绑定事件处理程序的首选方法。

因此,要从元素中删除所有处理程序,请使用:

$('.media-in').off();

或针对特定处理程序:

$('.media-in').off('mouseover mouseout click');

答案 1 :(得分:1)

你可以使用on()off(),但是一旦移除了事件处理程序,一旦你停止滚动它就不会神奇地返回,你将不得不再次用{{1}重新绑定它}}

on()