0

目前我选择元素jQuery('a#encode-url-button, a#decode-url-button'),是否可以在不创建新函数的情况下选择纯 js 中的相同元素?像document.getElementById('encode-url-button, decode-url-button').onclick = function...什么?

4

1 回答 1

7

是的,与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在问题中引用的那样......)


idFWIW,在 99.99% 的情况下,将选择器与标签选择器 ( )结合起来是没有意义的a#someid,因为id值是唯一的。只是#someid通常更好。将标签添加到它不会使任何事情变得更快;事实上,它让事情变得更慢。这样做的唯一原因是,有时元素会有一个标签(比如,a),有时是另一个(比如,我不知道,div),而你只想得到它,如果它有一个标签而不是另一个标签。非常边缘的情况...

于 2013-05-06T18:28:39.547 回答