1

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

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

我知道:

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

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

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

4

2 回答 2

7

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

因此,无论使用 jQuery 还是 Vanilla JS,通过类查找元素,即使不如通过 id 查找快,也足够快。

话虽这么说,因为只有一个元素(并且假设您的元素没有其他类),您可以避免 jQuery 进行的解析,如果它对您来说非常重要,那么让它更快:

document.getElementsByClassName('myclass')[0].className = '';

对于想要查看代码的人来说,这是 jQuery 搜索 element 时可能的“加速”之一:

// Speed-up: Sizzle(".CLASS")
} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
    push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
    return results;
}
于 2012-12-20T13:49:44.917 回答
0

没有更有效的方法可以做到这一点。如果它只有一个类,而不是你可以存储的 ID,那么你最好的选择类选择器。

于 2012-12-20T13:49:52.047 回答