jQuery,ID中类的选择器


91

在下面,我应该如何选择包含元素的类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 ]")

Answers:



48

只需使用普通的类选择器即可。

$('#my_id .my_class')

元素是否还有其他类也没关系。它具有.my_class类,并且位于#my_id内部,因此它将与该选择器匹配。

关于性能

根据jQuery选择器性能文档,分别使用两个选择器更快,如下所示:

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

这是文档的相关部分:

基于ID的选择器

// Fast:
$( "#container div.robotarm" );

// Super-fast:
$( "#container" ).find( "div.robotarm" );

.find()方法更快,因为无需通过Sizzle选择器引擎即可处理第一个选择-使用来处理仅ID的选择document.getElementById(),这是非常快的,因为它是浏览器固有的。

选择由ID由类单独(除其他外)调用浏览器提供的功能,如document.getElementById()它们是相当快,而使用一个后代选择调用灒发动机如所提到的,其尽管快,比建议的替代慢。



1

我认为您要求仅选择<span class = "my_class">hello</span>此元素,您已这样做,如果我正确理解您的问题,这就是答案,

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

DEMO


$("#my_id .my_class")是较短的等价物;在这种情况下,使用属性选择器不会有任何好处。
doppelgreener 2015年

我希望这也和您的回答一样,在我回答您回答的问题时,我没有注意到自从我回答以来我没有删除问题。
Thirumalai murugan

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.