与为每个元素的click事件设置单独的函数相反,我想迭代元素并根据id或其他任何内容进行分配?
document.getElementById('measure').onclick = function() { clickMe(1); };
我该如何处理?
答案 0 :(得分: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
};
}
};