更有效的方法来获取具有某个css类的ONLY元素?

anm*_*rti 1 jquery jquery-selectors

我有一个带有几个链接按钮 的菜单<a class="selected">.当我点击一个我应用一个类时selected,当我点击另一个时,我必须删除它的类并将此类分配给新单击的链接按钮.

因此,只有一个元素同时具有某个类名,我想选择它以删除此类.

我知道:

$('.myclass').removeClass('myclass');

我认为效率不高,因为它必须检查DOM的所有元素

获取此元素的更有效方法是什么:<a class="selected">并删除它的类selected

Den*_*ret 7

不,它不会检查所有元素:它使用优化的getElementsByClassName函数.

所以通过他们的类来寻找元素,即使没有比通过id查找快,也足够快,使用jQuery或Vanilla JS.

这就是说,因为只有一个元素(假设你的元素没有其他类),你可以避免jQuery进行的解析,如果它对你来说真的那么重要:

document.getElementsByClassName('myclass')[0].className = '';
Run Code Online (Sandbox Code Playgroud)

对于想要查看代码的人来说,这是jQuery搜索元素中可能的"加速"之一:

// Speed-up: Sizzle(".CLASS")
} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
    push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
    return results;
}
Run Code Online (Sandbox Code Playgroud)