jquery,id中的类的选择器

时间:2013-07-02 04:49:56

标签: jquery

下面,如何在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 ]")

6 个答案:

答案 0 :(得分:131)

您可以使用class selectordescendant 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 IDby class(以及其他内容)会调用浏览器提供的函数,例如document.getElementById()非常快,而使用descendent selector会调用Sizzle引擎作为提到哪些虽然快,但比建议的替代方案慢。

答案 2 :(得分:12)

始终使用

//Super Fast
$('#my_id').find('.my_class'); 

而不是

// Fast:
$('#my_id .my_class');

请查看JQuery Performance Rules

同样在Jquery Doc

答案 3 :(得分:1)

我认为你要求只选择<span class = "my_class">hello</span>这个元素,你这样做了,如果我理解你的问题,这就是答案,

$("#my_id [class='my_class']").addClass('test');

DEMO

答案 4 :(得分:1)

$( "#container" ).find( "div.robotarm" );
等于:$( "div.robotarm", "#container" )

答案 5 :(得分:0)

你可以使用 find() :

$('#my_id').find('my_class');

或者:

$('#my_id').find('span');

两种方法都能满足您的需求