是否可以像jQuery一样通过id选择元素?

Is it possible to select elements by id like in jQuery?

本文关键字:一样 id 选择 元素 jQuery 是否      更新时间:2023-09-26

目前我选择像jQuery('a#encode-url-button, a#decode-url-button')这样的元素,是否有可能不创建一个新的函数来选择纯js中的相同元素?比如document.getElementById('encode-url-button, decode-url-button').onclick = function... ?

是的,用document.querySelectorAll。它接受一个CSS选择器。大多数现代浏览器都支持。

如果你真的需要支持IE7和更早的版本,那么当然你可以只做两个getElementById调用,如果它们不是锚,就扔掉它们。(这就是选择器a#someid所做的)

如果你要对元素进行操作,你需要循环querySelectorAll的结果列表,因为DOM API不具有jQuery所具有的"集合论"方向。例如:

var list = document.querySelectorAll("#encode-url-button, #decode-url-button");
var index;
for (index = 0; index < list.length; ++index) {
   list[index].onclick = clickhandler;
}
function clickHandler() {
    // ....
}

(我不提倡使用这样的DOM0处理程序,看看使用addEventListener代替,但正如你在问题中引用的onclick…)


不知道,99.99%的情况下,将id选择器与标记选择器(a#someid)组合在一起是没有意义的,因为id值是唯一的。#someid通常更好。给它添加标签不会让任何事情变得更快;事实上,它让事情变慢了。这样做的唯一原因是,元素有时会有一个标签(例如,a),有时会有另一个标签(例如,我不知道,div),并且只有当它有一个而不是另一个时才想要获取它。