如何获得除div之外的所有元素(例如),包括嵌套的元素?

时间:2015-10-01 13:32:03

标签: javascript jquery jquery-selectors

这可能是一个很长的镜头,但有没有一种方法可以在没有特定标签/类/ id的情况下获取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之外的所有div标签:

$('body').find(':not(div, div *)')

在结果集合中,我仍然在p元素中得到div,我不希望这样。 有没有办法实现这一目标?我知道这个div是h1的一部分,因为我只是想选择元素而不是删除或做DOM操作,所以这可能是一个奇怪的事情,但这就是我需要的。

更大的问题 - 我需要检索所有文本节点,但要排除一些标签/类/ ID。我是按照建议here这样做的,但这还不够好。

感谢。

4 个答案:

答案 0 :(得分:0)

您提供的代码似乎有效,但也许您可以试试这个?

$('body').find("*").filter(":not(div)");

答案 1 :(得分:0)

有一个jQuery函数not(),它从当前集中删除匹配的元素。

所以你需要做的就是

var nonDivs = $('body').find('*').not('div');

答案 2 :(得分:0)

您可以首先选择所有元素,然后选择<div>及其后代,并使用.not()使用“div”结果过滤“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>

答案 3 :(得分:0)

在过滤器功能中检查它是否为文本节点,并检查其所有父类的类,标识,标记名称 - 无论您想要过滤哪个选择器。

listView.setOnClickListener(new AdapterView.OnItemClickListener(){
    public void onItemClick(AdapterView<Product> parent, View view, int position, long id){
            Toast.makeText(QRScanMenu.this, "You Clicked at "+ parent.getItemAtPosition(position).name, Toast.LENGTH_SHORT).show();
    }
});

以下是一个工作示例:https://jsfiddle.net/hracw15o/3/