javascript - 将 onclick 分配给整个类(class)

标签 javascript class onclick

我正在尝试将事件处理程序附加到具有特定 div 的所有元素上。我创建了一个 jsfiddle 显示我的代码示例。有人可以指出我正确的方向吗?

http://jsfiddle.net/nw4Xs/

var l = document.getElementsByClassName("item").Length;
var foo = function () { alert("foo"); };
for (var i = l - 1; i >= 0; i--) {
    document.getElementsByClassName("item")[i].onclick = foo();
}

请不要使用 jquery 答案

谢谢

最佳答案

我建议(除非您明确需要反向迭代):

var els = document.getElementsByClassName('item'),
    l = els.length,
    foo = function () { alert("foo"); };

for (var i = 0; i< l; i++) {
    els[i].onclick = foo;
}

JS Fiddle demo .

您的代码存在问题:

// 'Length' should be 'length':
var l = document.getElementsByClassName("item").Length;
var foo = function () { alert("foo"); };

// since you're not changing the class-name there's no need to
// go in reverse (it's just confusing to read):
for (var i = l - 1; i >= 0; i--) {
    // you're re-querying every iteration (plus when you're getting the length), why?
    // keeping the parentheses assigns the (non-existent) return value of the function,
    // instead of binding the function to the 'click' event:
    document.getElementsByClassName("item")[i].onclick = foo();
}

顺便说一句,您可以将事件处理程序绑定(bind)到最近的祖先元素,该元素包含您希望在单击时产生效果的所有元素(注意:使用存在的最近祖先在事件绑定(bind)时的 DOM 中,在本例中是 body,因为没有其他包装元素,在大多数情况下都会有,并且应该使用最接近的元素以避免事件必须一直冒泡到“顶部”):

var bindTarget = document.body, // use the closest wrapping element
    foo = function (e) {
        var e = e || window.event,
            clicked = e.target || e.srcElement;
        if (clicked.className.indexOf('item') > -1) {
            alert("foo");
        }
    };

bindTarget.onclick = foo;

JS Fiddle demo .

关于javascript - 将 onclick 分配给整个类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19149093/

相关文章:

javascript - 由于重定向 URI 无效,Keycloak token 请求被拒绝

java - 对于我的代码,如何实现关键监听器?

c# - 点击 Div 刷新页面

javascript - 如何在点击时清除数据列表输入?

javascript - 如何捕获回车键按下?

javascript - 在 MongoDB 更新语句中使用变量

python - "if self:"是什么意思?

Python:打印树的所有节点无意中存储数据

javascript - 单击另一个类时如何删除/添加类?

javascript - Grunt、Webpack 和 DllPlugin