下面,如何在my_class
元素中选择包含类id = "my_id"
的元素?
请注意,该元素也可能有另一个类,我没有选择。
<div id = "my_id">
<span class = "my_class hidden">hi</span>
<span class = "my_class">hello</span>
</div>
正在尝试
$("#my_id [class*=my_class ]")
答案 0 :(得分:131)
您可以使用class selector和descendant selector
$("#my_id .my_class")
答案 1 :(得分:45)
只需使用普通的'类选择器。
$('#my_id .my_class')
元素是否还有其他类并不重要。它有 .my_class 类,它位于 #my_id 内部,因此它将匹配该选择器。
根据jQuery selector performance documentation,单独使用两个选择器会更快,如下所示:
$('#my_id').find('.my_class')
以下是文档的相关部分:
基于身份的选择器
// Fast: $( "#container div.robotarm" ); // Super-fast: $( "#container" ).find( "div.robotarm" );
.find()
方法更快,因为第一个选择是在不经过Sizzle选择器引擎的情况下处理的 - 仅使用document.getElementById()
处理仅ID选项,这非常快,因为它是浏览器的原生
单独选择by ID或by class(以及其他内容)会调用浏览器提供的函数,例如document.getElementById()
非常快,而使用descendent selector会调用Sizzle引擎作为提到哪些虽然快,但比建议的替代方案慢。
答案 2 :(得分:12)
答案 3 :(得分:1)
我认为你要求只选择<span class = "my_class">hello</span>
这个元素,你这样做了,如果我理解你的问题,这就是答案,
$("#my_id [class='my_class']").addClass('test');
答案 4 :(得分:1)
也$( "#container" ).find( "div.robotarm" );
等于:$( "div.robotarm", "#container" )
答案 5 :(得分:0)
你可以使用 find() :
$('#my_id').find('my_class');
或者:
$('#my_id').find('span');
两种方法都能满足您的需求