【发布时间】:2014-07-13 03:54:33
【问题描述】:
我正在用 JavaScript 构建决策树。我没有可用于该项目的 jQuery。
我希望能够有按钮,放置在决策树的任何位置(隐藏或显示在页面上的任何位置),具有相同的类名。然后 JS 端的监听器会运行一个函数。
这是我使用的基于 ID 的侦听器。它运作良好,但我需要能够有多个具有相同类或名称的按钮可用。虽然我见过这样的例子,但我无法让它正常工作。
function q1a1() {
var q1a1button = document.getElementById("q1answer1");
if(q1a1button.addEventListener){
q1a1button.addEventListener("click", function() { q1answer1();}, false);
} else if(q1a1button.attachEvent){
q1a1button.attachEvent("onclick", function() { q1answer1();});
}
};
if(window.addEventListener){
window.addEventListener("load", q1a1, false);
} else if(window.attachEvent){
window.attachEvent("onload", q1a1);
} else{
document.addEventListener("load", q1a1, false);
}
function q1answer1() {
//DO SOME STUFF
}
这也需要在尽可能多的 IE 版本中工作。对于单类处理,我使用的是 querySelectorAll。
【问题讨论】:
-
只需使用 querySelectorAll() 来遍历具有该类的元素,或多或少地将该循环包装在您已有的代码周围。您还可以将单个事件附加到主体,并查看 (e.target||e.srcElement).className 以决定如何在调用时处理事件。
-
querySelectorAll 在 ie8 中工作。如果您需要支持以下任何内容,我为您感到抱歉。只需遍历元素数组,为每个元素添加一个事件监听器。
标签: javascript listener