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();
}
});
}
});