jquery:children()vs child selector">"

use*_*918 18 jquery children jquery-selectors

我有一个表格,其中有一个类似于以下内容的部分:

<tr>
    <td> <span class="myclass"></span>
    </td>
<tr>
Run Code Online (Sandbox Code Playgroud)

我的$(this)设置为tr元素,我正在尝试访问具有"myclass"类集的Span元素.以下似乎有效:

if ($(this).children('td').children('span').is('.myclass')){
    alert('in here');
}
Run Code Online (Sandbox Code Playgroud)

但是当试图使用它时:

if ($(this).children("td > span").is('.myclass')){
Run Code Online (Sandbox Code Playgroud)

或这个:

if ($(this).children("td span").is('.myclass')){
Run Code Online (Sandbox Code Playgroud)

它不是.我认为上述2中的任何一个都会得出类似的结果(虽然通过不同的方法),但显然不是.

我在这里错过了什么?

谢谢!

Fel*_*ing 19

children(selector)只会匹配那些匹配的孩子selector.没有tr孩子(tds)可以匹配td > span,因为tr没有span子元素,只有tds和td > span !== td.

文件也是关于这个相当明确:

获取匹配元素集中每个元素的子元素,可选择通过选择器进行过滤.


你可能想要的是.find():

$(this).find("td > span")
Run Code Online (Sandbox Code Playgroud)

它返回与选择器匹配的所有后代,而不仅仅是子项.