Kendo Dialog多次点击重复弹出需多次关闭问题咨询
问题成因
- 点击事件重复绑定
每次调用showDiv触发AJAX请求成功后,都会执行$('.undo').click(...)逻辑,jQuery的click绑定方法是追加事件监听器而非覆盖原有监听器,每调用一次就会给所有class="undo"的元素新增一个相同的点击回调。比如你先后触发3次showDiv,单个undo元素上就绑定了3个独立的点击回调,点击一次undo就会同步执行3次回调,因此console.log("second")的打印次数和此前触发showDiv的总次数一致,同时会调用多次弹窗打开逻辑,需要对应多次关闭操作。 - Kendo Dialog重复初始化
每次AJAX请求成功都会对同一个#dialog元素执行kendoDialog初始化操作,Kendo UI组件重复初始化时不会自动销毁旧实例,而是会生成新的实例挂载到目标元素上,且每次初始化的content是当前请求返回的对应行数据。此前生成的弹窗实例没有被清理,触发undo点击时所有绑定的回调都会打开对应自己初始化阶段生成的弹窗实例,就会出现点击一次弹出多个对应不同历史行数据的弹窗、关闭时按初始化顺序依次关闭的现象。 - 冗余逻辑说明
你将$(document).ready写在AJAX的success回调中属于无效冗余代码,页面初始加载完成后ready事件只会触发一次,后续声明的ready回调会立即同步执行,不会影响现有逻辑但属于不必要的写法。
内容的提问来源于stack exchange,提问作者xyz
相关产品推荐
相关产品推荐

