簡體   English   中英

如何獲取除div外的所有元素(例如,包括嵌套元素)?

[英]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)");

有一個jQuery函數not() ,它從當前集中刪除匹配的元素。

所以你要做的就是

var nonDivs = $('body').find('*').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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM