在jQuery中使用选择器的最有效方法?

Web*_*net 10 javascript optimization jquery

是否更有效使用$('.active')$('div.active')?我一直避免使用"div",因为它是javascript文件中的额外文本我不希望用户必须下载.

use*_*716 8

较早版本的IE将受益于包含div因为它们不支持getElementsByClassName().

因此,需要选择页面上的每个元素:

document.getElementsByTagName('*');
Run Code Online (Sandbox Code Playgroud)

...并手动测试,看它是否有active类.

如果你包括div,那么它可以缩小一点,因为它可以做:

document.getElementsByTagName('div');
Run Code Online (Sandbox Code Playgroud)

...然后只测试那些元素.

当我说旧版本时,我的意思是IE6和IE7,因为IE8 +支持querySelectorAll.


编辑:

浏览器支持:

  • 另一方面,如果按ID执行,则通过选择标记名称来降低效率.例如$('#my_id')比$('div#my_id')更有效.原因几乎相同 - 除了即使像IE6过时的浏览器也有`getElementById()`. (2认同)