2011-12-01 38 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