[英]How to get all elements but div (for example), including nested ones?
這可能是一個漫長的過程,但是有沒有一種方法可以在沒有特定標記/類/標識的情況下獲取JQuery中的元素集合,甚至沒有嵌套的?
假設我有這段代碼:
<div class="container1"> Lorem ipsum dolor sit amet <br><br> </div> <p>This is p 1 <div class="footer"> tessssst <p> p test </p> </div> </p> <div class="container"> tessst </div> <p>This is p 2 <div id="someID" class="container"> tessssst 2 </div> </p>
現在,我使用這樣的JQuery來查找除div標記之外的所有標記,包括后代:
$('body').find(':not(div, div *)')
在結果集合中,我仍然將div放在p元素內,但我不希望這樣。 有什么辦法可以實現? 我知道這個div是h1的一部分,由於我只想選擇元素而不是刪除或執行DOM操作,所以這可能是一件很奇怪的事情,但這正是我所需要的。
更大的問題-我需要檢索所有文本節點,但要排除一些標簽/類/ ID。 我正在按照此處的建議進行操作,但這還不夠好。
謝謝。
您提供的代碼似乎有效,但是也許您可以嘗試一下?
$('body').find("*").filter(":not(div)");
您可以先選擇所有元素,然后選擇<div>
及其后代,然后使用.not()
使用“ divs”結果過濾“ all”結果(紅色樣式用於標記匹配的集合) :
var all = $('body').find('*'); var divAll = $('body').find('div, div *'); var nonDiv = all.not(divAll); nonDiv.css('color', 'red');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container1"> Lorem ipsum dolor sit amet <br><br> </div> <p>This is p 1 <div class="footer"> tessssst <p> p test </p> </div> </p> <div class="container"> tessst </div> <p>This is p 2 <div id="someID" class="container"> tessssst 2 </div> </p>
在過濾器功能中,檢查它是否是文本節點,並檢查其所有父類的類,id,標記名-您要過濾的選擇器。
var textnodes = $('body').find("*").contents()
.filter(function () {
return (this.nodeType === 3 && $(this).parents("div").length <= 0);
})
.each(function () {
console.log($(this).text());
});
這是一個工作示例: https : //jsfiddle.net/hracw15o/3/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.