让我详细描述一下这个问题:
当悬停在一个元素上时,我想显示一个绝对定位的div。对于jQuery来说,这非常简单,并且工作得很好。但是当鼠标移到其中一个子元素上时,它会触发包含div的mouseout事件。如何防止javascript在悬停子元素时触发包含元素的mouseout事件。
用jQuery做到这一点的最好和最快捷的方法是什么?
这里有一个简单的例子来说明我的意思:
Html:
<a>Hover Me</a>
<div>
<input>Test</input>
<select>
<option>Option 1</option>
<option>Option 2</option>
</select>
</div>
Javascript/jQuery:
$('a').hover( function() { $(this).next().show() }
function() { $(this).next().hide() } );
发布于 2009-07-24 17:04:30
这个问题有点老了,但前几天我遇到了这个问题。
使用最新版本的jQuery执行此操作的最简单方法是使用mouseenter
和mouseleave
事件,而不是mouseover
和mouseout
。
您可以使用以下命令快速测试行为:
$(".myClass").on( {
'mouseenter':function() { console.log("enter"); },
'mouseleave':function() { console.log("leave"); }
});
发布于 2015-09-18 18:21:59
是的,伙计们,用.mouseleave
代替.mouseout
$('div.sort-selector').mouseleave(function() {
$(this).hide();
});
或者甚至与live
结合使用
$('div.sort-selector').live('mouseleave', function() {
$(this).hide();
});
发布于 2008-12-08 20:30:03
您正在寻找与javascript的防止事件冒泡等效的jQuery。
看看这个:
http://docs.jquery.com/Events/jQuery.Event#event.stopPropagation.28.29
基本上,您需要在子DOM节点中捕获事件,并在那里停止它们在DOM树上的传播。另一种方法是将事件捕获设置为页面上的特定元素,它将接收所有事件,尽管实际上不建议这样做(因为它会严重干扰页面上的现有事件)。这对DnD行为之类的很有用,但对你的情况绝对不是。
https://stackoverflow.com/questions/350639
复制相似问题