Mouseenter事件多次发生,即使我试图阻止它

时间:2016-09-08 16:33:52

标签: jquery mouseenter

以下是它应该如何工作=> Normal behavior

1)在创建最新的likers框并且仍然打开之后,不应该触发事件(mouseenter)。 2)我在最新的喜欢的盒子上有一个事件(mouseleave)(不喜欢自己)。

但当我悬停(第一次进入mouseenter)时,事件发生的次数很多次,并且每次重新创建最新的likers框(不应该发生)。 => Actual problem

$('.statuses_mbody').on('mouseenter',
'.status_likes, .reply_likes',function (e) {
  //capture the main data(not displayed for simplicity).
  //send ajax request.
  //here is code that checks the state of the box(closed,opened)
  //get data back from server and display them.
});

我已经在互联网上看到并尝试过很多代码,但我仍然无法找到解决方案。

2 个答案:

答案 0 :(得分:1)

您需要检查事件是否已在进行中,我可能会这样做:

$('.statuses_mbody').each(function() {
    $(this).one('mouseenter', '.status_likes, .reply_likes',function (e) {
    if ($(this).data('in-progress')) { return }
    $(this).data('in-progress', true)
    $.ajax(/* whatever */)
        .done(function() { /*whatever*/ })
        .always(function() {
            $(this).data('in-progress', false);
        });
});

答案 1 :(得分:1)

每次输入与此活动相关联的元素时,<script src="https://maps.googleapis.com/maps/api/js"></script> <div style="text-align:center;"> <div id="log"></div> </div> <div id="map_canvas" style="width: 100%; height: 90%;"></div>事件都会触发! 以下是对该事件的描述:

  

绑定要在鼠标进入元素时触发的事件处理程序,或触发元素上的处理程序。

也许你想要mouseenter事件?