JS中用事件委托方式监听事件,是为了达到页面加载后新添加的元素也享有共同事件处理程序的效果的最佳方案。
但遇到了用引用第三方代码是非事件委托方式,且无法修改为事件委托方式处理时的无奈局面。
在尝试中发现了可以用重新引用相应 JS 文件,从而达到类似JS在新添加元素后重新执行一遍的效果,因此先前新添加的元素节点也被顺理成章地被带有事件监听。
示例代码如下:
HTML:
1 <script src="/static/home/js/main.js" id="mainjs"></script>
JS:
1 // jQuery语法 2 function refreshjs() { 3 $('#mainjs').remove(); // 移除旧的js引入标签 4 $('<script src="/static/home/js/main.js" id="mainjs"></script>').appendTo(document.body); // 重新引入相应的js文件,js重新执行,使事件监听也重新添加一遍 5 } 6 7 refreshjs(); //在添加新的元素节点后,或其它需要重新添加事件的情况下调用