目前我选择像jQuery('a#encode-url-button, a#decode-url-button')
这样的元素,是否可以在不创建新函数的情况下选择纯js中的相同元素?像document.getElementById('encode-url-button, decode-url-button').onclick = function...
?
答案 0 :(得分:7)
是的,document.querySelectorAll
。它接受一个CSS选择器。大多数现代浏览器support it。
如果你真的需要支持IE7及更早版本,那么你当然可以做两个getElementById
调用,如果它们不是锚点就扔掉它们。 (这是选择器a#someid
的作用。)
如果您要对元素进行操作,则需要在querySelectorAll
中循环生成结果列表,因为DOM API没有jQuery具有的“set theory”方向。例如:
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
一样......)
FWIW,99.99%的时间将id
选择器与标签选择器(a#someid
)组合在一起是没有意义的,因为id
值是唯一的。只需#someid
通常会更好。添加标签不会使任何事情变得更快;事实上,它让事情变得更慢。这样做的唯一原因是,有时元素会有一个标记(比如a
),有时候会有另一个标记(比如说,我不知道,div
),如果它有,你只想得到它一个但不是另一个。很边缘的情况...