防止悬停触发事件两次

时间:2015-01-20 10:51:23

标签: jquery hover jquery-hover

我正试图在div悬停时发出警报。

http://jsfiddle.net/4RgTS/248/

我当前的代码是(对于名为'testdiv'的div)

$(document).ready(function() {
    $("#testdiv").hover(function() {
        alert('1');
    });
});

这可以显示警报,但是在下一次鼠标移动时,即使我没有在div上空盘旋,也会再次显示警报?

一如既往地谢谢,

3 个答案:

答案 0 :(得分:3)

您可以使用$.one事件来处理此问题:

$(document).ready(function() {
  $("#testdiv").one("mouseenter",
    function() {
      alert('1');
    });
});
#testdiv {background: #ccf;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="testdiv">Hover Me!!!</div>


或者,如果我没有正确回答您的问题,您只需要使用mouseenter事件。

$(document).ready(function() {
  $("#testdiv").on("mouseenter",
    function() {
      alert('1');
    });
});
#testdiv {background: #ccf;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="testdiv">Hover Me!!!</div>

答案 1 :(得分:2)

这是因为如果只有一个处理函数传递给hover(),它将用于mouseentermouseleave事件。要获得所需的行为,请更改为仅使用mouseenter

$("#testdiv").mouseenter(function () {
    alert('1');
});

Updated fiddle

答案 2 :(得分:1)

我相信你只想要.mouseenter()事件:

$("#testdiv").mouseenter(function() {
      alert('1');
});

<强> Working Demo