2016-09-08 100 views
0

這裏是它是如何工作的=>Normal behaviorMouseEnter事件多次發生,即使我試圖阻止它

1)事件(的mouseenter)不應該被創建的最新likers框後火和仍然開放。 2)我有一個事件(mouseleave)在最新的相似者框(不喜歡自己喜歡)。但是當我懸停(第一次使用鼠標時)真的很快,事件發生很多次,每次重新創建最新的相似者框(它不應該發生)。 => 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。 – 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()事件?

相關問題