Javascript 为闭包上的多个元素创建列表生成器
在使用jQuery很长时间之后,我第一次使用闭包 我在为从getElementsByClass获得的多个对象创建侦听器时遇到问题。你知道我该怎么做吗Javascript 为闭包上的多个元素创建列表生成器,javascript,events,closures,Javascript,Events,Closures,在使用jQuery很长时间之后,我第一次使用闭包 我在为从getElementsByClass获得的多个对象创建侦听器时遇到问题。你知道我该怎么做吗 goog.events.listen( goog.dom.getElementsByClass('clone'), goog.events.EventType.CLICK, function(e) { alert('hi'); } ); 对于上述代码,我得到以下错误: 未
goog.events.listen(
goog.dom.getElementsByClass('clone'),
goog.events.EventType.CLICK,
function(e) {
alert('hi');
}
);
对于上述代码,我得到以下错误:
未捕获的TypeError:对象没有方法“attachEvent”
编辑:我通过以下代码实现了这一点。但是,我不太确定这是否是最有效的方法:
var clone_buttons = goog.dom.getElementsByClass('clone');
for (var i = 0; i < clone_buttons.length; i++) {
goog.events.listen(
clone_buttons[i],
goog.events.EventType.CLICK,
function(e) {
alert('hi');
}
);
}
在提供的代码中,您没有在任何地方使用闭包。如果需要最高效的代码,则应将常用属性存储在局部变量中:
var clone_buttons = goog.dom.getElementsByClass('clone');
var length = clone_buttons.length;
var events = goog.events;
var CLICK = events.EventType.CLICK;
for (var i = 0; i < length; i++) {
events.listen(
clone_buttons[i],
CLICK,
function(e) {
alert('hi');
}
);
}
您可以在此处阅读有关闭包的更多信息:
您可以在此处阅读有关提高性能的提示: