我只在Firefox中遇到mosueenter / mouseleave事件的问题...
<HTML>
<HEAD>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.js"></script>
<script>
$(document).ready(function() {
$("#theDiv").mouseenter(function() {
$("#output").append('mouseenter<br>');
});
$("#theDiv").mouseleave(function() {
$("#output").append('mouseleave<br>');
});
});
</script>
</HEAD>
<BODY>
<div id="theDiv" style="position:relative; height: 300px; width:300px; background-color:Black;">
<input type="text" style="position:absolute; top: 40px;" />
<div style="position:absolute; top:100px; height:100px; width:100px; background-color:Red; overflow:auto;">
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
<p>Content</p>
</div>
</div>
<div id="output"></div>
</BODY>
</HTML>
我只想知道鼠标何时离开了包含DIV。 但是,如果您将鼠标快速移动到文本框上,或者将鼠标移动到div的滚动条上,则会触发事件。
- 编辑 -
$("#theDiv").hover(function() {
$("#output").append('hoverin<br>');
}, function() {
$("#output").append('hoverout<br>');
});
我在悬停时尝试了以下操作。 它似乎仅在Firefox中遭受同样的问题。
答案 0 :(得分:2)
我几乎总是发现,如果您计划在鼠标进入和离开元素时同时执行操作,最好使用hover()方法或hoverIntent()插件而不是单独的mouseenter / mouseleave处理程序。这两种方法似乎都可以处理可能的鼠标移动事件范围,而不仅仅是映射到mouseenter / mouseleave。
答案 1 :(得分:2)
此行为与firefox bug有关,已在Firefox 3.6中修复。 jQuery尝试使用withinElement函数来处理这个bug(通过jQuery源代码搜索),但解决方案并不完美。