如何将类应用到容器中,使's的子类具有所需的两个类
How to apply class to container that's children have the required two class?
很难解释,但这里有一个例子:
<div>
<span class='first'>text</span>
<span>text</span>
</div>
<div>
<span>text</span>
<span class='second'>text</span>
</div>
<div>
<span class='first'>text</span>
<span class='second'>text</span>
</div>
我想应用一个类到div,它有两个 first
和second
类的孩子。
这就是修改后的html:
<div>
<span class='first'>text</span>
<span>text</span>
</div>
<div>
<span>text</span>
<span class='second'>text</span>
</div>
<div class='addedClass'>
<span class='first'>text</span>
<span class='second'>text</span>
</div>
我可以通过标记div与data
属性,但这似乎不是最好的方式,我相信有一个方法与jquery的引擎。
你可以尝试像这样链接你的jQuery选择器:
$("div").has(".first").has(".second").addClass("addedClass");
所以本质上你是说,选择有一个类为"first"的子元素和一个类为"second"的子元素的div。
示例:http://codepen.io/JasonGraham/pen/xOdRpz
使用 :has
选择
选择至少包含一个与指定选择器匹配的元素的元素
$('div:has(span.first):has(span.second)').addClass('has')
.has {
border: 2px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div>
<span class='first'>text</span>
<span>text</span>
</div>
<div>
<span>text</span>
<span class='second'>text</span>
</div>
<div>
<span class='first'>text</span>
<span class='second'>text</span>
</div>
另一种可能的方法是筛选选定的元素:
$(function () {
$('div').filter(function(index, element) {
return ($(this).children('.first').length == 1 && $(this).children('.second').length == 1);
}).addClass('addedClass');
});
.addedClass {
background: red;
}
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<div>
<span class='first'>text</span>
<span>text</span>
</div>
<div>
<span>text</span>
<span class='second'>text</span>
</div>
<div>
<span class='first'>text</span>
<span class='second'>text</span>
</div>
因为你正在寻找下一个相邻的选择器元素,你可以使用最短的形式:
$('div').has('span.first+span.second').addClass('addedClass');
$(function () {
$('div').has('span.first+span.second').addClass('addedClass');
});
.addedClass {
background: red;
}
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>
<div>
<span class='first'>text</span>
<span>text</span>
</div>
<div>
<span>text</span>
<span class='second'>text</span>
</div>
<div>
<span class='first'>text</span>
<span class='second'>text</span>
</div>
刚刚看到另一个使用CSS选择器'+'的帖子
你也可以使用'~',这取决于你是否需要下一个(+)或者相邻的(~)
$('。第一次~接着).parent () .addClass (addedClass);
相关文章:
- JavaScript:当有两个B类元素时,如何在id X中的B类中选择A类
- Jquery - 将我的两个类相乘没有结果
- 如何按id查找两个类中任一类的子元素
- 如何在Javascript中交换两个列表的子列表
- 如何使用jQuery绕过具有指定类和两个条件的元素的函数
- 同一javascript行中的两个不同css类
- 如果两个id具有相同的值,则添加类
- 将具有两个此类子字符串的字符串中的第一个子字符串生成与正则表达式匹配,正则表达式通常默认匹配最后一个子字符串
- 两个类之间的状态
- 为什么将子模型添加到两个父模型
- 'toggleClass`-如何在两个不同的“类”名称之间“切换”
- Javascript Regex匹配两个字符串之间的子字符串,但子字符串可以包含DOT(.)
- 使用jQuery删除两个类
- 如何使用js同时更改两个ID的类名
- get元素的两个类asp.net MVC
- 如何使用jQuery在两个元素之间切换类
- 继承两个类-Javascript
- 在输入后,有条件地应用Angular中的两个类之一
- 单击添加类两个类到不同的元素
- 如何将类应用到容器中,使's的子类具有所需的两个类