2012-12-13 64 views
1

所有鼠标悬停事件我曾尝试这样的代码:拆散的窗口滚动

$(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

在jQuery 1.7,off()的和on()是结合了优选的方法和取消绑定事件处理程序。

所以从一个元素中删除所有的处理程序,使用此:

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

或特定处理器:

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

您可以使用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(); 
      } 
     }); 
    } 
});