如果鼠标悬停在外,我如何解除绑定或禁用鼠标,然后在其他框淡出时重新启用鼠标。
我尝试了unbind,但似乎它不起作用,它只是禁用整个事情。
我甚至试过了暂停,但这对我没有好处。
感谢任何帮助,谢谢
$("#shopping_basket").mouseover(function() {
// set a timeout so that this event will not trigger twice when mouseover from the bottom
setTimeout(function() {
/*$("#shopping_basket").unbind(mouseover);*/
$("#miniBasketDetails").fadeIn(500);
},500);
});
$("#miniBasketDetails").mouseleave(function() { $("#miniBasketDetails").fadeOut(500); });
答案 0 :(得分:2)
只需猜一下这样的事情:
$("#shopping_basket").bind('mouseover', function() {
setTimeout(function() {
$("#shopping_basket").unbind('mouseover');
$("#miniBasketDetails").fadeIn(500);
}, 500);
//Re-enable as needed: $("#shopping_basket").bind('mouseover', function(){});
});
此代码未经过测试,但应该可以使用。
我认为您的问题是您将mouseover
作为变量传递给.unbind()
,而不是字符串。这就是“整件事”被禁用的原因,因为JavaScript正在寻找一个名为mouseover
的变量,该变量未定义,导致您的代码中断。试试这样:.unbind('mouseover')
。
答案 1 :(得分:0)
不确定这是否是您正在寻找的algorythm,它是based on answers shown in this question 这是the fiddle and the code:
$("#shopping_basket").hover(function() {
$("#miniBasketDetails").fadeIn(500);
}, function() {
$("#miniBasketDetails").data('is_over', false);
setTimeout(function() {
if (!$('#miniBasketDetails').data('is_over')) {
//if not hovered over the #miniBasketDetails in 650 miliseconds after mouseleave
$("#miniBasketDetails").fadeOut(500);
}
}, 650);
});
$("#miniBasketDetails").mouseenter(function() {
$(this).data('is_over', true);
});
$('#miniBasketClose').click(function() {
$("#miniBasketDetails").fadeOut(500, function() {
$(this).data('is_over', false);
});
});
span#miniBasketClose
只是一个可选的“关闭按钮”,对于代码的功能不是必需的。它的功能可以替换(如果需要),例如将鼠标悬停在其他一些元素上。