javascript - 如何动态地将函数分配给元素的 onclick 事件?

标签 javascript html onclick getelementbyid

与为每个元素的点击事件设置单独的函数相反,我想迭代元素并根据 id 或其他内容进行分配?

document.getElementById('measure').onclick = function() { clickMe(1); };

我该如何解决这个问题?

最佳答案

过去我曾做过以下事情:

var setClickOnElements = function(selector) {
    $(selector).each(function() {
        $(this).click(function(event) {
            // behaviour on click
        });
    });
};

...其中 selector 是类选择器,例如.my-class。在传递给 each 的回调中,您可以获取所选元素的其他属性,例如id 等。如果您将该类添加到您想要设置 click 函数并在加载时调用 setClickOnElements('.my-class'); 的元素,您应该可以了!

编辑:上面使用了 jQuery。如果您仅限于使用纯 Javascript,则可以使用 John Resig 关于 getElementByClass 实现的文章中描述的方法之一:http://ejohn.org/blog/getelementsbyclassname-speed-comparison/

这是一个示例(使用 http://www.dustindiaz.com/getelementsbyclass 中的 Dustin Diaz 方法):

var getElementsByClass = function(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

var setClickOnElements = function(className) {
    var elements = getElementsByClass(className);
    for (var i = 0; i < elements.length; i++) {
        var element = elements[i];
        element.onclick = function(event) {
            // click behaviour here
        };
    }
};

关于javascript - 如何动态地将函数分配给元素的 onclick 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24423639/

相关文章:

javascript - 带预览的图像上传上的删除按钮

javascript - 如何实现类似于 Facebook 的面包屑导航?

javascript - HTML 表单默认值会覆盖 Internet Explorer 9 中发布时的实际值

javascript - 在 Bootstrap 元素选项内的引号内使用引号

Javascript 泛光灯跟踪 iframe 使浏览器窗口空白,请帮忙!

javascript - react .createElement : type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object

html - Bootstrap 选项卡 Pane 填充 100% 高度

html - 从页面中删除HTML5音频或视频时,如何防止播放?

html - CSS 到 PDF,使用 THEAD 在新页面上重复标题

javascript - 如何禁用或启用页面上图像的所有onClick