如果我有一个存储在变量中的表行列表,是否有办法只将其中一行(具有特定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>
?
答案 0 :(得分:4)
假设tableRows
包含HTML字符串:
var singleRow = $(tableRows).filter("#2");
如果它已经是一个包装HTML字符串的jQuery对象,那么你可以省略对jQuery的调用:
var singleRow = tableRows.filter("#2");
filter
方法将匹配的元素集减少到与选择器匹配的元素集(或通过函数定义的测试)。
但是,值得注意的是,生成的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)
你可以这样做 -
$('#2')
答案 4 :(得分:0)
我建议保持指定您期望的标签类型。所以像dknaack建议或
$('tr#2')
会更具体。但这里的每个人都是对的。这是Jquery seletors的基础知识。这也恰好与CSS选择器相同。您还可以从JQuery文档中找到有关选择器的更多信息。 http://api.jquery.com/category/selectors/
答案 5 :(得分:0)
var tableRows = $('tr'),
singleRow = tableRows[2];