2011-12-01 36 views
2

如何殺死每個內部的迴路? 我的意思是這裏是我的代碼,當查詢是有100個結果,並以某種方式(我會很高興,如果你會解釋我爲什麼)警報彈出100次後,只點擊一個結果 (點擊一個結果需要彈出警報1次)每個內部都有迴路

var tit_id = '#tit_' + this.SN; 
function paintDATA(QUERY) { 
    var incld = '<div>'; 

    $.each(QUERY, function() { 
     if (this.wCount != 0) { 
      $(tit_id).click(function() {  
       alert('RRRRRRRRRRRRRRR') 
      }); 



<div id="tit_' + shipment + '"> 
+0

你說QUERY有100個結果。所以你的'$ .each'執行100次,並且每次都會將另一個*事件處理程序附加到'tit_id'。當你點擊時,所有100個事件處理程序都運行。 –

+0

從.each()的jQuery文檔: 「我們可以通過使回調函數返回false來破壞$ .each()循環。返回非false與for循環中的continue語句相同;它會立即跳到下一個迭代。「 – Jpsy

+0

您能否提供完整的代碼示例?您提供的代碼不是有效的JavaScript。另外,你在哪裏修改this.wCount? –

回答

4

對於查詢返回的每一個元素,你將相同元素的相同的處理:

你要附加在每個項目上單擊處理程序,而不是回來了?

$.each(QUERY, function() { 
    if (this.wCount != 0) { 
     $(this).click(function() {  
      alert('RRRRRRRRRRRRRRR') 
     }); 
    } 
} 

編輯

所以,如果你想提醒,然後從每個循環退出,你可以像碧玉說,從每次回調返回false:

$.each(QUERY, function() { 
    if (this.wCount != 0) { 
     $(this).click(function() {  
      alert('RRRRRRRRRRRRRRR') 
      return false; 
     }); 
    } 
} 
+0

,但我不想要打破每一個我只想要警報將只彈出一次,每個將運行到下一個...如果將有1000個結果我需要該警報將彈出一次,只爲結果被點擊 – Alexxx

2

我我不是100%確定你在問什麼。如果你想打破$.each()循環,你可以return false;

的文檔狀態:

我們可以通過使 回調函數返回false打破在一個特定的迭代。每個$()循環。返回非錯誤與for循環中的 continue語句相同;它會立即跳到下一個 迭代。

文檔鏈接:http://api.jquery.com/jquery.each/(爲一例前)

+0

但我沒有想要打破每個我只想要警報將只彈出一次,每個將運行到下一個...如果將有1000個結果,我需要該警報將彈出一次,只有結果被點擊 – Alexxx