【发布时间】:2016-02-25 18:01:17
【问题描述】:
问题
鉴于 jQuery 选择了一个元素 (.context),我该如何选择它:
- 不是特定类的子/孙的元素(例如
.paragraph)[该类可以具有更深的自身嵌套级别,例如.paragraph .paragraph] - 具有特定标签集的子/孙元素(例如
strong|i)
注意事项
-
.context可以是另一个.context或另一个.paragraph的后代。 - 我要选择的元素可以通过
[data-hint^="I want"]选择器来识别(很明显真实场景中不存在data属性)。 - 我不仅想要
.context的直接子代,还想要后代(显然过滤掉了.context .paragraph中包含的元素。
战场
$selection = $('.context').first();
$formatting_elements = $selection.find('strong, i')
.not('.paragraph *');
.paragraph {
margin: 15px;
position: relative;
border: 1px solid black;
}
.paragraph .paragraph {
border: 1px solid #444;
}
.paragraph .paragraph .paragraph {
border: 1px solid #888;
}
.context {
margin: 15px;
position: relative;
background-color: limegreen;
}
[data-hint^="I want"] {
background-color: violet;
}
.paragraph:before {
content: '-paragraph-';
position: absolute;
bottom: 100%;
left: 200px;
}
.context:before {
content: '-context-';
position: absolute;
bottom: 100%;
left: 200px;
color: green;
}
.context .paragraph:before {
font-style: italic;
color: #444;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div class="paragraph">
<i>bar</i>
<div class="paragraph">
<strong>foo</strong>
<i>bar</i>
<div class="context" data-hint="Find elements relative to this element">
<i data-hint="I want to get this">foo</i>
<div class="paragraph">
<i>bar</i>
<div class="paragraph">
<strong>foo</strong>
<div class="paragraph">
<strong>foo</strong>
<i>bar</i>
</div>
<i>bar</i>
</div>
</div>
<strong data-hint="I want to get this">foo</strong>
<i data-hint="I want to get this">bar</i>
</div>
</div>
</div>
我尝试了上面的脚本,但它似乎不起作用。
目标
能够选择并将 yellow 元素更改为 violet。
【问题讨论】:
-
给它一个特定的
id并调用jquery。这个链接可能对你有帮助w3schools.com/jquery/jquery_ref_selectors.asp -
你可以在问题中加入
html吗? -
@guest271314 HTML 包括在内。
-
@Graham 我没有得到你的建议。能详细点吗?
标签: javascript jquery css tree jquery-selectors