不同的jquery表结果

时间:2016-09-22 16:27:16

标签: javascript jquery html

在尝试为this question获取正确的jquery时,我遇到了一个问题。难道每个都不具有相似的输出吗?第一个甚至不输出class的{​​{1}}



div

var list = document.querySelectorAll('[aria-label="Help"]');
console.log('&&&&&&&&&&&&&&');
$('[aria-label="Help"] tr div').each(function() {
  console.log($(this).attr('class'));
  console.log($(this).text());
});
console.log('&&THIS ONE WORKS&&&');
$('.text:not(:contains(X-Men 2),:contains(X-Men 3))').each(function() {
  console.log($(this).text());
});
console.log('&&&&&&&&&&&&&&');
$('[aria-label="Help"] .text:not(:contains(X-Men 2),:contains(X-Men 3))').each(function() {
  console.log($(this).text());
});
console.log('&&&&&&&&&&&&&&');
$('.text:not(:contains(X-Men 2),:contains(X-Men 3))',$(list)).each(function() {
  console.log($(this).text());
});




1 个答案:

答案 0 :(得分:3)

div置于tr内是无效的HTML,因此浏览器"修复"您的布局,打破依赖于预期层次结构的选择器。

以下是检查员所显示的内容:

<div class="abc">
  <label><a><span class="text">Game of thrones</span></a></label>
</div>
<div class="abc">
  <label><a><span class="text">Harry Potter</span></a></label>
</div>
<div class="abc">
  <label><a><span class="text">X-Men</span></a></label>
</div>
<div class="abc">
  <label><a><span class="text">X-Men 2</span></a></label>
</div>
<div class="abc">
  <label><a><span class="text">X-Men 3</span></a></label>
</div>
<table id="5" aria-label="Help">
  <thead></thead>
  <tbody>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>
    <tr>

    </tr>
  </tbody>
</table>

https://jsfiddle.net/bduhtfL6/