这应该工作。
getElementsByClassName返回与条件相匹配的元素的数组(类似于
var elements = document.getElementsByClassName("classname");var myFunction = function() { var attribute = this.getAttribute("data-myattribute"); alert(attribute);};for (var i = 0; i < elements.length; i++) { elements[i].addEventListener('click', myFunction, false);}jQuery为您完成了循环部分,您需要使用纯Javascript来完成。
如果您有 ES6支持 ,则可以将最后一行替换为:
Array.from(elements).forEach(function(element) { element.addEventListener('click', myFunction); });注意:较旧的浏览器(如IE6,IE7,IE8)不支持
getElementsByClassName,因此会返回
undefined。
编辑:更正
getElementsByClassName不会返回数组,而是返回大多数HTMLCollection或某些浏览器中的NodeList(Mozilla
ref)。这两种类型都是Array-Like,(意味着它们具有length属性,并且可以通过其索引访问对象),但是它们并不是严格意义上的Array或从Array继承。(这意味着不能对这些类型执行在数组上可以执行的其他方法)



