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

Jquery 取消绑定窗口滚动上的所有鼠标悬停事件,jquery,scroll,bind,unbind,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)

我尝试过以下代码:

$(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
鼠标上方发生的事件

另外,是否有任何方法可以按数组滚动页面上的事件解除绑定?比如:

$(window).scroll(function(){ 
    $(this).unbind(['mouseover','click','mouseout']);
});
从jQuery1.7开始,和是绑定和取消绑定事件处理程序的首选方法

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

$('.media-in').off();
或针对特定处理程序:

$('.media-in').off('mouseover mouseout click');
您可以使用
on()
off()
,但一旦删除事件处理程序,一旦停止滚动,它就不会神奇地返回,您必须使用
on()
重新绑定它

$(function(){
    var timer;
    media_bind();

    $(window).on('scroll', function(){
         clearTimeout(timer);
         $('.media-in').off('mouseover mouseout');
         timer = setTimeout(media_bind, 500);
    });

    function media_bind() {
         $('.media-in').on(
             mouseover: function() {
                 $(this).children('.media-options').show();
             },
             mouseout: function() {
                 $(this).children('.media-options').hide();
             }
         });
    }  
});