选择不是特定选择子元素的元素

时间:2017-01-11 20:29:57

标签: javascript jquery

我需要在div中选择所有超链接,这些超链接不是具有“test”类的div的子级。我认为$("a", $("div").not(".test"))会起作用,但是如果我在div中使用“test”类将另一个div放入其中,那么我的选择不起作用。 在下面的例子中,我应该只选择链接4,5和6,这是我完成这项任务所需要的吗?

var links = document.getElementsByTagName("a");
var notAds = $("a", $("div").not(".test"));
console.log(links.length);
console.log(notAds.length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="test">
  <div>
    <div>
      <a href="test1.html">test 1 link</a>
      <a href="test2.html">test 2 link</a>
      <a href="test3.html">test 3 link</a>
    </div>
  </div>
</div>
<div>
  <a href="test4.html">test 4 link</a>
  <a href="test5.html">test 5 link</a>
  <a href="test6.html">test 6 link</a>
</div>

1 个答案:

答案 0 :(得分:1)

您必须使用not方法才能找到divtest类不具有父级的元素。

var notAds = $("a").not($('.test').find('a'));
  

not方法从匹配元素集中删除元素。

&#13;
&#13;
var links = document.getElementsByTagName("a");
var notAds = $("a").not($('.test').find('a'));
console.log("Length: " + notAds.length);
$(notAds).map(function(){
  console.log($(this).text());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="test">
  <div>
    <div>
      <a href="test1.html">test 1 link</a>
      <a href="test2.html">test 2 link</a>
      <a href="test3.html">test 3 link</a>
    </div>
  </div>
</div>
<div>
  <a href="test4.html">test 4 link</a>
  <a href="test5.html">test 5 link</a>
  <a href="test6.html">test 6 link</a>
</div>
&#13;
&#13;
&#13;