如果指定了元素,则有时会发现JQUERY元素

时间:2013-10-21 03:02:04

标签: jquery

我有一个代码。

var countRow = $('table#receiving-stock-view tr').length - 1;
var ar = new Array();
for(var iter=0;iter<countRow;iter++){
ar[iter] = $('div.modal table#receiving-stock-view tr#'+iter).find('input[name=rspid]').attr('id')
        +","+$('div.modal table#receiving-stock-view tr#'+iter).find('input[name=rsqty]').val()
        +","+$('div.modal table#receiving-stock-view tr#'+iter).find('input[name=rscost]').val()
        +","+$('div.modal table#receiving-stock-view tr#'+iter).find('input[name=rssrp]').val();
        console.log($('table#receiving-stock-view tr#'+iter).find('input[name=rsqty]').val());
        console.log(ar[iter]);
}

但是,在循环期间,它仅适用于第一行。它在其他行上随机失败。

但是,

for(var iter=0;iter<countRow;iter++){
ar[iter] = $('#receiving-stock-view tr#'+iter).find('input[name=rspid]').attr('id')
        +","+$('#receiving-stock-view tr#'+iter).find('input[name=rsqty]').val()
        +","+$('#receiving-stock-view tr#'+iter).find('input[name=rscost]').val()
        +","+$('#receiving-stock-view tr#'+iter).find('input[name=rssrp]').val();
}

如果我没有指定要查找的元素并保留id,则会正确读取所有值。知道为什么会这样吗?这真的很奇怪。

编辑:我使用ajax添加一个新行。并且整个表都在一个模态类中。

<table id="receiving-stock-view">

 <thead hidden="true" style="display: table-header-group;">
 <tr>
 <th>Product</th>
 <th>Quantity</th>
 <th>Cost</th>
 <th>SRP</th>
 <th>Sub-Total</th></tr>
 </thead>

  <tbody>
 <tr id="0">
 <td><span><input type="text" value="HeadPhoneszs" name="rspid" id="1"></span></td>
 <td><input type="text" value="1" name="rsqty" id="rsqty_id"></td>
 <td><input type="text" value="1" name="rscost" id="rscost_id"></td>
 <td><input type="text" value="1" name="rssrp" id="rssrp_id"></td></tr>
 <tr id="1"><td><span><input type="text" value="vp" name="rspid" id="13"></span></td>
 <td><input type="text" value="2" name="rsqty" id="rsqty_id"></td>
 <td><input type="text" value="2" name="rscost" id="rscost_id"></td>
 <td><input type="text" value="2" name="rssrp" id="rssrp_id"></td>
 </tr>
 </tbody>
</table>

1 个答案:

答案 0 :(得分:0)

  1. 使用时

    $('div.modal table#receiving-stock-view tr#'+iter)
    
  2. 浏览器首先查找具有modal类的div。根据您的comment,您确实拥有超过1个同一类的div。这可以使浏览器选择任何一个div元素。所以这可能会随机失败。

    1. 使用时

      $('#receiving-stock-view tr#'+iter)
      
    2. 浏览器尝试将表的id receiving-stock-view与DOM元素进行匹配。由于其独特性,它每次都能成功匹配表格行。

      如果您能够使用id进行匹配,那么这是匹配DOM中元素的最佳和最有效的方法。在这种情况下,不需要pre-selectors,它们会降低网页的性能。