我有这个div .overlay,当它被点击时,mousebin和mouseleave被unbind禁用,并且工作正常。
现在,当我将鼠标悬停在div .container上时,我希望mouseenter和mouseleave再次返回(绑定)“.overlay”div,但这不会发生。
这是我的代码
$(document).ready(function(){
$(".overlay").click(function(){
$(".overlay").unbind('mouseenter mouseleave');
});
$(".container").hover(function(){
$(".overlay").bind('mouseenter mouseleave');
});
});
希望somone可以提供帮助,非常感谢。
答案 0 :(得分:0)
绑定事件需要一个实际运行的函数。我拿了你的代码并添加了两个位,一个鼠标事件的记录器和一些重置日志的东西:
$(".overlay").click(function(){
$(".overlay").unbind('mouseenter mouseleave');
$("#messages").html("unbound");
});
$(".container").hover(function(){
$(".overlay").bind('mouseenter mouseleave',
function(){ $("#messages").append("mouse event");});
});
您可以在http://jsfiddle.net/E8LY9/看到它正常工作。除了mouseenter和mouseleave的回调之外,你的代码似乎做得很好。
有一点让我觉得你希望容器与叠加层完全分开,所以我更新了小提琴,把它们作为单独的元素:
答案 1 :(得分:0)
一旦unbind,您实际上是通过删除该事件的处理程序来禁用该事件。当你mouseenter/mouseleave
开始播放时,我不知道你想要解雇什么,但是让我们说你要改变字体颜色:
$(".overlay").mouseenter(function () {
$(this).css({color: 'red'});
}).mouseleave(function () {
$(this).css({color: 'black'});
});
然后你取消绑定(取消绑定工作),但不知何故重新绑定不?它实际上确实已经删除了该事件的先前绑定执行,因此您需要重建它。解决方案是将其放在function
中并调用该函数来重新绑定事件。
选中jsfiddle。