【问题标题】:How to select all item expect item in specific class如何选择特定类别中的所有项目期望项目
【发布时间】:2014-02-24 23:27:53
【问题描述】:

我有递归 HTML,我知道最外层 DIV 的 ID。在下面的 HTML 中,我想选择所有具有类“citem”的 DIV,期望内部“Popup”中的“citem”

<div id="pop1" class="Popup">
    <div class="container">
        <div class="citem">child item-1</div>

        <div class="Popup">
            <div class="container">
                <div class="citem">child inner item-1</div>
            </div>
        </div>

        <div>
            <div class="citem">child item-2</div>
        </div>

    </div>
</div>

<script type="text/javascript">
    if (typeof $ != "undefined") {
        $(function () {

            var Parent = $("#pop1");
            var Container = $(Parent.find(".container:first"));

            Container.find(".citem").not(".Popup .citem").each(function () {
                alert($(this).html());
            });

        });
    }
</script>

使用上面的代码没有选择任何项目,但我希望输出为“child item-1”和“child item-2”。

任何想法,如何为此编写查询。我不想选择所有项目,然后检查谁是父母等。

【问题讨论】:

    标签: jquery selector


    【解决方案1】:

    > 选择器只会捕获第一级子级。

    jQuery('.container > .citem')
    

    除非其父级具有 .container 类,否则不会匹配具有 .citem 类的项目。

    【讨论】:

      【解决方案2】:

      您的主要父元素有一个 "Popup" 类,它取消了所有 citems 的资格

      <div id="pop1" class="Popup">
      

      所以

      Container.find(".citem").not(".Popup .Popup .citem").each(function () {
      

      应该有效

      【讨论】:

      • 有没有办法在 JQuery 选择器中使用“this”关键字?这样我们就可以说选择所有项目期望当前项目?
      • 或类似$('.class').not($(this).find('.class')),或$('.class').not($(this)),这取决于你想要做什么。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2011-01-02
      • 2017-02-16
      相关资源
      最近更新 更多