为什么这个jQuery选择器没有选择任何内容

Why is this jQuery selector not selecting anything?

本文关键字:有选择 任何内 选择器 jQuery 为什么      更新时间:2023-09-26

这是一个简单的问题,快速的代码转储。我有

$insides = $('<thead><tr><th><!--Blank space --></th></tr></thead><tbody><tr class="green-row"><td>Opportunities to Date</td></tr><tr><td>Number of wins</td></tr><tr><td>Number of active deals</td></tr><tr><td>Number of persmission to pursue</td></tr><tr><td>Number of persmission to contact</td></tr><tr><td>Number of deals lost</td></tr><tr><td>Number of deals disqualified</td></tr><tr><td id="deal%-0365">% deals with ...<input class="filterer" type="checkbox" checked="true"/></td></tr><tr><td id="deal%-VM">% deals with ...<input class="filterer" type="checkbox" checked="true"/></td></tr><tr><td id="deal%-AM">% deals with ...<input class="filterer" type="checkbox" checked="true"/></td></tr><tr><td>Current total pipeline value</td></tr></tbody></table>');
for ( var region in this.DealsByRegion ) 
{
    $insides.find('thead > tr').append('<th class="region" id="region-' + region + '">' + region + '<input class="filterer" type="checkbox" checked="true"</input>');
}

它不起作用,因为

$insides.find('thead > tr')

没有返回任何内容(即$insides.find('thead > tr').length = 0)。为什么?<tr><th><!--Blank space --></th></tr>不是作为$insides的后代的thead的子代吗?

这是因为$insides变量中的当前根元素已经是thead节点。所以下面的代码:

$insides.find('thead > tr')

转换为css选择器

thead thead > tr

更合适的选择是:

$insides.filter('thead').children('tr')
相关文章: