提问人:yellephen 提问时间:10/25/2021 更新时间:10/25/2021 访问量:30
Javascript 中的某种事件范围?
Some kind of Event scoping in Javascript?
问:
我正在使用 javascript 和 jquery asp.net 运行。我有一些在文档就绪上运行的 javascript,它使用 jquery 通过 .on 函数分配一些 onclick 事件。没关系。我还有一个部分视图,该视图在一些需要相同功能的用户输入后加载,因此我在部分视图中再次引用脚本,导致文档就绪函数再次触发,并在部分视图中为我的控件分配 onclick 事件。那行得通。除了问题是我在主页上的控件收到两个 onclick 事件,如果我在加载部分视图后单击主页控件,则该事件会触发两次。我尝试在jquery循环中添加一个.off()以在添加事件之前删除该事件,以便在第二次运行时删除第一个事件并添加一个新事件,但该事件不会被删除。我还尝试重写它以使用遵循相同模式的 .addEventListener 和 .removeEventLister;在添加之前删除,但得到相同的结果。
如果我可以查询当前附加的事件侦听器,我可以轻松阻止 onclick 事件的第二次添加,但我的研究表明,在 javascript 中没有办法做到这一点(尽管您可以在 chrome 开发工具中使用 getEventListeners())。
那么,为什么当我执行 .off() 或 .removeEventListener() 时它不删除第一个事件呢?是否有某种像我调用两次的脚本这样的范围,它最终是脚本的两个实例,并且您无法删除由另一个脚本应用的事件侦听器?这只是一个猜测。
任何指导都会有用,谢谢。
答: 暂无答案
评论
event.target === event.currentTarget
target
currentTarget
event.stopPropagation()