2013-09-05 155 views
0

我正在使用jQuery的mouseover事件來獲取一些數據在Ajax中使用ajax,AJAX工作正常,但我的問題是當我們將鼠標移動到元素更快的事件觸發多個動作,也就是說,如果我在鼠標上發出警報,如果我反覆移動元素,我會得到多個警報,我不想要這個,我已經試過解綁,但不能正常工作。這裏是jQuery鼠標懸停事件觸發多次,當移動鼠標更快

<ul class="tab-content"> 
<li><div class="place-holder"></div></li> 
<li><div class="place-holder"></div></li> 
<li><div class="place-holder"></div></li> 
<li><div class="place-holder"></div></li> 
</ul> 


$(document).on('mouseover', '.place-holder' , function(e){ 
alert ('hallo'); 
} 
+0

所以'mouseover'應該只能工作一次? – tymeJV

+0

由於所有的div都有相同的類別,所以當你將鼠標懸停在每個div上時,它會多次觸發 – Krishna

+0

@krishna - 那可以,但問題是如果你連續移動鼠標的速度越快,它會被觸發多次,我不想發生這種情況,我正在尋找一些像隊列一樣的東西:虛假的---這樣的事情。實際上我想在鼠標輸入時觸發一個ajax請求。 –

回答

5

一種解決方案,用於延遲與一個計時器的操作。就像:

var timer; 
$(document).on('mouseover', '.place-holder' , function(e){ 
    clearTimeout(timer) 
    timer = setTimeout(function(){ 
     alert('Hallo'); 
    }, 200) 
}) 

這樣,你的活動將在鼠標後觸發0.2秒,將觸發只有當你快速移動一次。

0

實際上,問題與Ajax調用有關,當我在ajax結果出現之前觸發多次觸發事件時。所以我所做的是使用一個布爾標記,這樣

if (window.isRunning) return; 
window.isRunning = true; 

,並在阿賈克斯

complete : function() { 
          window.isRunning = false; 
        } 

所以現在它不會觸發多次,我得到這個從棧本身,由於一噸

相關問題