为什么$('#table> tr')选择器不匹配?(总是返回0)

Fre*_*ind 8 jquery jquery-selectors

HTML代码:

<table id='table'>
    <tr>
        <td>..</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

使用jquery的js代码:

var l1 = $('#table > tr').length;
var l2 = $('#table tr').length;
alert(l1+','+l2);?
Run Code Online (Sandbox Code Playgroud)

结果:

 0,1
Run Code Online (Sandbox Code Playgroud)

为什么第一个#table > tr得到0?

您可以从这里看到现场演示:http://jsfiddle.net/Freewind/PmsFQ/

SLa*_*aks 14

因为a的直接子<table>节点只能是<thead>,, <tbody><tfoot>(或者,<colgroup>或者<caption>那些不包含行).

浏览器的DOM将隐式地将stray <tr>s 包装在一个<tbody>.(对于不这样做的浏览器,jQuery伪造它)

你需要写$('#table > tbody > tr').