首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择具有某个类的所有子代HTML元素,但这些元素之间没有其他特定类的元素

选择具有某个类的所有子代HTML元素,但这些元素之间没有其他特定类的元素
EN

Stack Overflow用户
提问于 2015-09-11 22:45:02
回答 2查看 139关注 0票数 0

假设您有以下HTML:

代码语言:javascript
复制
<div id="root-component" class="script-component">a0
            <div></div>
            <div class="component">a2</div>
            <div class="script-component">b
                <div class="component">b1
                    <div class="script-component">c
                    </div>
                    <div class="component">b2
                    </div>
                </div>
            </div>
            <div class="component">a3</div>
            <div class="component">a4</div>
            <div>            
                <div class="component">a5</div>
            </div>
            <div class="component"> a6            
                <div class="component">a7</div>
            </div>
            <div class="component">a8
                <div class="script-component"></div>
            </div>
</div>

root-component中,我希望选择具有component类的所有子元素,直到并且不包括具有script-component类的元素。这意味着在最后应该只选择具有a文本的元素(应该选择a2、a3、a4、a5、a6、a7和a8 )。

编辑:或者用Trung的话说:目标是一旦遇到script-component类,就跳过在树下搜索组件。

Edit2:或者换句话说:我希望选择所有的.component子级,直到遇到.script-component

这可以使用jQuery和CSS来完成。

您可以使用此jsFiddle http://jsfiddle.net/pgegsjja/进行试用。

EN

回答 2

Stack Overflow用户

发布于 2015-09-11 23:27:36

这将选择所有a组件。对它进行测试,看看它是否适合您的需求。

$('#root-component').find(".component").siblings(':not(.script-component)').css("color", "red");

票数 1
EN

Stack Overflow用户

发布于 2015-09-11 23:54:47

过滤函数对少于2个匹配项进行测试,因为我们需要包含出现在root-component目录中的类script-component

代码语言:javascript
复制
jQuery.expr[':'].parents = function (a, i, m) {
    return jQuery(a).parents(m[3]).length < 2;
};

// The b2 element is still selected so it is not yet correct
$('#root-component').find(':not(.script-component) .component, >.component').css("color", "red");

$('.component').filter(':parents(.script-component)').css("color", "blue");
代码语言:javascript
复制
div {
    margin-left: 30px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="root-component" class="script-component">a0
    <div></div>
    <div class="component">a2</div>
    <div class="script-component">b
        <div class="component">b1
            <div class="script-component">c</div>
            <div class="component">b2</div>
        </div>
    </div>
    <div class="component">a3</div>
    <div class="component">a4</div>
    <div>
        <div class="component">a5</div>
    </div>
    <div class="component">a6
        <div class="component">a7</div>
    </div>
    <div class="component">a8
        <div class="script-component"></div>
    </div>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32526184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档