2013-07-31 42 views
0

enter image description hereMy fiddle如果使用其他的Javascript过滤功能

里面我有这样的小提琴。我想在这样的过滤器函数内部使用if。我有一个工作,但循环似乎没有打破。由于不会中断,因此所有未过滤的条件都会打印其他部分。如何打破这个循环?或者有更好的想法吗?

我有两个文本框和一个按钮,当我输入标题和数量和命中添加,我想检查它是否已经存在于表上。如果存在,我想将数量替换为新值。如果它不存在,我想添加新的标题和数量的新行。检查存在对我来说是个神秘的东西,根本不起作用。

$('#btnAdd').click(function() { 
     debugger; 
     UOMCaption = $('#UOMCaption').val(); 
     UOMQty = $('#UOMQuantity').val(); 

     $("#tbluom tr td:first-child").filter(function() { 
      if ($(this).text().indexOf(UOMCaption) > -1) { 
       $(this).next("td").text("found it"); 
      } 
      else { 
       $('#tbluom >tbody').append('<tr><td>' + UOMCaption + '</td><td>' + UOMQty + '</td></tr>'); 
      } 
     }); 
     $('#UOMCaption,#UOMQuantity').val(""); 
    }); 
+1

所以,你要打破,当你找到的第一个元素? –

+0

你的小提琴与提供的代码不符,为什么? – muneebShabbir

+0

如果你想在找到第一个元素后返回,那么在if块内添加一个return语句。 – schnill

回答

1

如果你想在循环打破后的第一场比赛,然后使用

$("#tbluom tr td:first-child").each(function() { 
    if ($(this).text().indexOf(UOMCaption) > -1) { 
     $(this).next("td").text("found it"); 
     return false; 
    } else { 
     $('#tbluom >tbody').append('<tr><td>' + UOMCaption + '</td><td>' + UOMQty + '</td></tr>'); 
    } 
}); 
+0

return false not working on else部分,如果表中已经存在三行,那么新的记录被追加三次以上.. – Sakthivel

+0

@codebrain它应该在使用'each'而不是'filter'时工作。 – basilikum

+0

这一个近乎工作,但是当我添加同样的UOMcaption如果无法检查..有什么问题。 – Sakthivel