javascript - 为什么这个 jQuery 选择器没有选择任何东西?

标签 javascript jquery html dom

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

$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> thead 的 child 那是 $insides 的后代?

最佳答案

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

$insides.find('thead > tr')

转换为 css 选择器

thead thead > tr

更合适的选择器是:

$insides.filter('thead').children('tr')

关于javascript - 为什么这个 jQuery 选择器没有选择任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516492/

相关文章:

javascript - 未捕获的语法错误 : Unexpected token <

javascript - 向有页脚的表格添加滚动条

javascript - 使用 Angular 时页面的 HTML 源代码在哪里?

javascript - 使用javascript更改具有相同id的多个图像的宽度

javascript - Fabricjs objectCaching : zoom image content, 保持图像边框

javascript - 无法获取 api 数据并使用 vuex 存储 - vue.js

javascript - 如何使用 AngularJS 创建 html 页面模板并将 Controller 动态绑定(bind)到它?

Javascript 为空

javascript - 使用 JS/Jquery 和 SVG 来显示/隐藏 <object> SVG 中的元素

"keyup change keypress click tap"中的 JQuery 未在 iPhone (IoS) 上触发