使用HTML javascript属性“onSOMETHING”或在脚本上为所有元素一次添加事件监听器?

时间:2012-01-15 21:53:22

标签: javascript html javascript-events

我使用的脚本从文件中获取外部JSON,并通过其对象循环并在字符串上创建HTML,然后在完成后,它会附加到DOM中。但我想知道是否最好使用例如:onclick html属性(直接进入代码)或者在追加到DOM之后使用Javascript立即通过其类向所有html对象添加一个事件监听器。

速度是否相同或速度快于另一速度为什么? 我使用了很多HTML对象,所以我真的需要知道,以获得最佳性能。 谢谢。 :)

2 个答案:

答案 0 :(得分:2)

我建议使用一些简单的event delegation

// works on existing and future elements
// since we are attaching to the parent
var d = document;
d.getElementById("theParentOfAppendedElements").onclick = function (e) {
    if(e.target.tagName.toLowerCase() === "something" 
        && e.target.className === "appended") {
        // do something
    }
}

答案 1 :(得分:0)

我个人总是使用不引人注目的javascript。我将所有脚本放在单独的js文件中,并将所有事件连接到这些脚本中。这样我就不再混合标记和脚本了,我减少了标记的大小。这限制了带宽消耗。由于javascript文件是由客户端浏览器缓存的,因此可以提高网站的性能。