循环遍历一组tr并在jquery中通过索引转义特定的tr

时间:2012-01-24 09:29:56

标签: javascript jquery ajax

嗨,我希望像这样循环一些tr。

<tr>
 <td> <input type="radio" id="r11"   value="a" name="r1_selectedobjects" /> </td>
   <td><input type="radio" id="r12"   value="b" name="r1_selectedobjects" /> <td>
</tr>
<tr>
   <td><input type="radio" id="r21"   value="a" name="r2_selectedobjects" /></td>
  <input type="radio" id="r22"   value="b" name="r2_selectedobjects" /></td>
</tr>
   <td><input type="radio" id="r31"   value="a" name="r3_selectedobjects" /></td>
   <td><input type="radio" id="r32"   value="b" name="r3_selectedobjects" /></td>
<tr>
<tr>
<td><input type="submit" id="matbutton" data-inline="true"  value="Submit" onclick="return CheckMatrixRadio(this);" /></td>
    </tr>

我可以通过$('tr').each(function(){});

执行此操作

我想跳过3 rd tr

这一个

</tr>
   <td><input type="radio" id="r31"   value="a" name="r3_selectedobjects" /></td>
   <td><input type="radio" id="r32"   value="b" name="r3_selectedobjects" /></td>
<tr>

如何做到这一点。认为我不知道任何calss或id名称,只有我知道的是我的tr的索引,在这种情况下,3

如何在我的tr循环中跳过each。请帮助...........

5 个答案:

答案 0 :(得分:3)

each回调会收到一个从零开始的索引,告诉您正在查看哪个匹配的项目,所以:

$('tr').each(function(index){
    // If not the third one...
    if (index !== 2) {
        // ...do something
    }
});

如果出于任何原因你不想使用each(你在问题中提到它,但只是覆盖基础),而是想要创建一个包含除第三行之外的所有行的jQuery实例,我知道的最有效的方法是:

var rows = $('tr');
rows = rows.not(rows[2]);

...通过not从匹配的集合中删除第三行。对于涉及:not:eq的选择器,您也可以实现相同的目标:

$('tr:not(:eq(2))')

...但是你要求jQuery处理选择器而不是允许它将选择器传递给浏览器的querySelectorAll实现(如果有的话)。 *

Examples of all three


(旁注:如果页面上的任何位置都有不相关的tr,您可能需要使选择器更具体地针对您正在查看的行组。)


* PiTheNumber在his answer中指出$('tr:not(:nth-child(3))')也应该这样做。这很有用,因为它的优点是浏览器本身可以处理:not:nth-child。请注意:nth-child使用基于1的索引,并且非常:eq不同 - 它会检查哪个子元素是其容器,而不是它是否是第n个匹配的元素。应该使用包含tr元素的表格,但它们都在同一个tbody中。

答案 1 :(得分:1)

您可以使用:nth-child()选择器

跳过第三个tr
$('tr:not(:nth-child(3))').each(function(index, value) {

});

答案 2 :(得分:0)

使用Index,它是循环当前迭代的基于0的索引。

e.g。

$('tr').each(function(index){
    if(index !== 2) {
      // Do stuff here for rows that aren't the 3rd one
    }
});

有关详细信息,请参阅http://api.jquery.com/each/

答案 3 :(得分:0)

首先看看你的标记!它有一个很大的错误。关闭<tr>代码。我为你纠正了

<tr>
   <td> <input type="radio" id="r11"   value="a" name="r1_selectedobjects" /> </td>
   <td><input type="radio" id="r12"   value="b" name="r1_selectedobjects" /> <td>
</tr>
<tr>
   <td><input type="radio" id="r21"   value="a" name="r2_selectedobjects" /></td>
   <input type="radio" id="r22"   value="b" name="r2_selectedobjects" /></td>
</tr>
<tr>
   <td><input type="radio" id="r31"   value="a" name="r3_selectedobjects" /></td>
   <td><input type="radio" id="r32"   value="b" name="r3_selectedobjects" /></td>
</tr>
<tr>
   <td><input type="submit" id="matbutton" data-inline="true"  value="Submit" onclick="return CheckMatrixRadio(this);" /></td>
</tr>

然后你可以在jQuery中排除给定的元素:

$('tr:not(:nth-child(3)').each(function(){ // function });

答案 4 :(得分:0)

$('tr').not(':nth-child(3)')会给你结果。