仅从列表中检索一个表行

时间:2012-01-05 14:37:13

标签: javascript jquery

如果我有一个存储在变量中的表行列表,是否有办法只将其中一行(具有特定ID)放入anoter变量?

例如,如果tableRows是这个 -

<tr id="0"></tr>
<tr id="1"></tr>
<tr id="2"></tr>
<tr id="3"></tr>
<tr id="4"></tr>

如何将singleRow设为<tr id="2"></tr>

6 个答案:

答案 0 :(得分:4)

假设tableRows包含HTML字符串:

var singleRow = $(tableRows).filter("#2");

如果它已经是一个包装HTML字符串的jQuery对象,那么你可以省略对jQuery的调用:

var singleRow = tableRows.filter("#2");

filter方法将匹配的元素集减少到与选择器匹配的元素集(或通过函数定义的测试)。

这是working example

但是,值得注意的是,生成的singleRow变量将包含jQuery实例,而不是像tableRows包含的字符串文字。要从中提取字符串,您需要一些技巧:

var str = $("<div>").append($(rows).filter("#2")).html();

基本上,您将所需元素附加到新元素(在这种情况下,它是div),然后在其上调用html。当html方法返回一个字符串时,你有一个包含新元素内容的字符串,这是你想要的元素。

答案 1 :(得分:2)

只需使用

 $("#2")

获取<tr id="2"></tr>

[编辑]正如Felix Kling在评论中所指出的,如果你的变量tableRows是一个jquery对象,你不想按 id过滤但是通过另一种选择器(不是唯一的选择器),您应该考虑使用.filter(),正如James Allardice在答案中所示。
[编辑2](评论中对James Montagne的信用)如果您的表行尚不存在且仍然是对象变量,这也是正确的

请注意,id选择是最快(最简单)的选择方式,只要您的HTML正确并且您的ID是唯一的。

答案 2 :(得分:1)

当你使用id时,那么

$('#2')

答案 3 :(得分:1)

带有id的

你可以这样做 -

$('#2')

答案 4 :(得分:0)

我建议保持指定您期望的标签类型。所以像dknaack建议或

$('tr#2')

会更具体。但这里的每个人都是对的。这是Jquery seletors的基础知识。这也恰好与CSS选择器相同。您还可以从JQuery文档中找到有关选择器的更多信息。 http://api.jquery.com/category/selectors/

答案 5 :(得分:0)

var tableRows = $('tr'),
    singleRow = tableRows[2];