Javascript 构造添加事件侦听器的正确方法是什么?
我正在做一个小的个人项目,我使用vanilla JS控制前端的一切。我有5条不同的路线和一条Javascript 构造添加事件侦听器的正确方法是什么?,javascript,html,Javascript,Html,我正在做一个小的个人项目,我使用vanilla JS控制前端的一切。我有5条不同的路线和一条app.js。以下是我当前添加事件侦听器的方式: function deleteTopic() { let btn = document.querySelector('.button-delete-topic') if (btn) { btn.addEventListener('click', e => { ////////////do somet
app.js
。以下是我当前添加事件侦听器的方式:
function deleteTopic() {
let btn = document.querySelector('.button-delete-topic')
if (btn) {
btn.addEventListener('click', e => {
////////////do something
})
}
}
它工作得很好,但我担心的是,该函数在所有路由上都被调用,即使
按钮delete topic
仅在一个路由上。这样添加事件侦听器是个坏主意吗?为每个路由添加单独的*.js
文件是否更好?谢谢您的建议。我将创建一个实用程序来处理这些事件
document.addEventListener('DOMContentLoaded', function (ev) {
var button = document.getElementsByTagName("button");
button.addEventListener("click", function () {
console.log(this.getAttribute('data-action'));
// Check if data-action exists or do something with action
});
}, true);
然后可以使用
数据属性
传递数据 deleteTopic
是否仅在该路线上调用?如果是这样的话,我觉得很好me@CertainPerformance不,所有路线都有。然后,if(btn)
如果没有按钮,则条件的计算结果为false删除主题
听起来您应该更改的是,deleteTopic
仅在该路由上被调用,而不是allSure。如果函数仅在某个页面的上下文中有意义,请在调用它之前确保您在该页面上。项目越大,这对于代码结构来说就越重要和有用。我认为只要你做得对,任何一种方法都可以很好地工作,至少对于大型专业网站以外的任何地方都是如此,因为大型专业网站可能会有更客观的精益。如果由于共享代码而合并脚本,如果需要的话,您可能可以使用像Webpack这样的绑定器来输出多个.js文件