2016-09-08 6 views
0

Вот как это должно работать =>Normal behaviorMouseEnter событие происходит несколько раз, даже если я стараюсь, чтобы предотвратить его

1) Событие (MouseEnter) не должен стрелять после создания последней Те, кому нравится коробка и остается открытым. 2) У меня есть событие (mouseleave) в последнем окне со списком (не на самих себе).

НО, но когда я нахожу (mouseenter в первый раз) очень быстро, это событие происходит много раз и каждый раз воссоздает последнее окно со списком (это не должно происходить). => 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. 
}); 

я видел и пробовал много фрагментов кода через Интернет, но до сих пор я не могу найти решение по этому вопросу.

+0

Как вы быстро перемещаете указатель мыши в этом месте, может быть указатель, выходящий из div, а затем снова входит в div и, следовательно, он срабатывает многократно. Вы можете добавить флаг, когда вы делаете вызов ajax. Таким образом, пока вы не получите ajax-успех, любой другой ввод мыши не вызовет ajax. – Indra

+0

Я загружаю снова первый gif, и я объяснил некоторые вещи. –

+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

mouseenter событие будет срабатывать каждый раз, когда вы вводите элементы, связанные с этим событием ! Вот описание этого события:

Привязка обработчика событий для стрельбы, когда мышь входит элемент, или вызывает этот обработчик на элемент.

Возможно, вы хотите one() мероприятие?