Javascript jquery each()不';t循环新添加的表行
我有一张非常简单的桌子Javascript jquery each()不';t循环新添加的表行,javascript,jquery,html,Javascript,Jquery,Html,我有一张非常简单的桌子 <table> <tr><td>1</td></tr> <tr><td>2</td></tr> <tr><td>3</td></tr> </table> 1. 2. 3. 当我在上面的表中添加另一行时,td jquery中的文本为5,each()不会循环通过新添加的行,它只返回预定义的元素,而不是动态
<table>
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
</table>
1.
2.
3.
当我在上面的表中添加另一行时,td jquery中的文本为5,each()不会循环通过新添加的行,它只返回预定义的元素,而不是动态添加的元素
$("table > tbody").append("<td>5</td>");
$("table tr td").each(function(){
alert($(this).text());
});
$(“表>正文”)。附加(“5”);
$(“表tr td”)。每个(函数(){
警报($(this.text());
});
请参见
tbody
中的,您不能将td
直接附加到tr
中
$("table > tbody").append("<tr><td>5</td></tr>");
$("table tr td").each(function(){
alert($(this).text());
});
$(“表>正文”)。附加(“5”);
$(“表tr td”)。每个(函数(){
警报($(this.text());
});
您的推理不正确。它找不到元素的原因是选择器与要追加的元素嵌套不匹配
将td
元素包装在tr
元素中。您需要执行以下操作:
$("table > tbody").append("<tr><td>5</td></tr>");
$("table tr td").each(function(){
alert($(this).text());
});
$(“表>正文”)。附加(“5”);
$(“表tr td”)。每个(函数(){
警报($(this.text());
});
原因很简单,您的原始代码将生成新行作为
5
,而不包含您在每个函数中寻找的tr标记。Chrome允许您这样做,即使它是无效的HTML。看看OP的小提琴。@Reigel Kunwari怎么了?;)@JanDvorak是的chrome让你这么做。。。但是OP的选择器不会。。。想象一下,表trtd
…@alex lol。。。我很快编辑了它。。。但是你有一双敏锐的眼睛当您直接将新的
放入
时,您的选择器是tr td
。