Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery each()不';t循环新添加的表行_Javascript_Jquery_Html - Fatal编程技术网

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