1

我只是不明白为什么 ID 不是有效的父母: http ://api.jquery.com/child-selector/

有效的:

$("#listequestions tr").click(function() {
  $(this).addClass("success");
});

无效:

$("#listequestions > tr").click(function() {
  $(this).addClass("success");
});

有人可以帮我理解为什么吗?

谢谢你。

4

5 回答 5

9

如果没有,则自动将Atbody插入表中。

这就是为什么唯一可能的匹配"#listequestions > tr"方法是将 id 赋予 a thead、 atfoot或 a tbody

这是子选择器的危险之一。

假设您有以下 HTML:

<table id=listequestions>
    <tr><td>some text</td></tr>
</table>​

然后tr将由这两个查询匹配:

  • $('#listequestions > tbody > tr')
  • $('#listequestions tr')
于 2012-12-04T17:02:43.687 回答
1

在这里,您正在选择带有 id listequestions 的元素内的直接子元素

$("#listequestions > tr").click(function() {
  $(this).addClass("success");
});

在这里,您正在选择包含子子项的 id 为 listequestions 的元素内的所有元素。

$("#listequestions tr").click(function() {
  $(this).addClass("success");
});

谢谢

于 2012-12-04T17:03:28.473 回答
1
$("#listequestions  tr")

将尝试匹配all the children which are tr

$("#listequestions > tr")

会匹配only the immediate children..

因此,如果 tr 不是直接孩子,那么第二个将不起作用..

正如dystroy指出的那样

于 2012-12-04T17:04:16.623 回答
0

这会起作用吗?

$("#listequestions").children("tr").click(function() {
      $(this).addClass("success");
    });
于 2012-12-04T17:01:21.120 回答
0
$("#listequestions").find("tr").click(function() {
      $(this).addClass("success");
});
于 2012-12-04T17:03:21.560 回答