javascript - 事件处理程序应该动态添加还是在文档准备好时添加?

标签 javascript jquery

目前,我使用两种方法将事件处理程序添加到动态添加的 DOM 对象中,原因是我不知道哪种方法更有意义。

方法 1 - 创建

function createButton(){
   var btn = $('<div class = "btn"/>');
   btn.on('click', function(){
     doStuff();
   });
   $('body').append(btn);
}

方法 2 - 文档准备就绪

function createButton(){
   var btn = $('<div class = "btn"/>');
   $('body').append(btn);
}

$('document').on('ready', function(){
   $('body').on('click', '.btn', function(){
     doStuff();
   });
});

我也有长期运行的应用程序考虑因素,并且会担心这里的垃圾收集问题。

最佳答案

在方法 1 中,您将一个新的(尽管不是唯一的)处理程序对象附加到您创建的每个按钮。

在方法 2 中,您对 .btn 类的任何内容重用相同的处理程序对象。

短期内,我会使用方法 2,因为对于任何给定按钮,您只有 1 个处理程序函数,因此您不妨通过不创建冗余处理程序来节省内存。

关于javascript - 事件处理程序应该动态添加还是在文档准备好时添加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089684/

相关文章:

javascript - 着陆页有延迟然后自动向下滚动

javascript - 当 transclude 设置为 true 时,Elem 绑定(bind)不起作用

javascript - jQuery Animate 和 CSS 间歇性工作

javascript - 检查字符串是否是数组的一部分 - javascript

php - Divi Child 主题打破了 WordPress 定制器

javascript - Jquery 函数根据时间输入字符串增加一小时

javascript - 如何在输入html时突出显示文本?

javascript - 密码对比

jquery - 带有 farbtastic 颜色选择器内容的 Twitter Bootstrap Popover.js 丢失附加事件

javascript - 文本超出列宽