我在使用 kendo ui 对话框窗口时遇到问题。当我第二次打开剑道对话框窗口并单击“接受”按钮时,事件会触发两次,下次会触发三次,依此类推。 有工作示例 http://jsfiddle.net/T89mG/74/ 。 我哪里出错了?
addToQueueWindow = $("#AddToQueueWindow").kendoWindow({
modal: true,
visible: false
}).data("kendoWindow");
$(document).ready(
$("#showAddMessageDialog")
.button()
.click(function (e) {
addToQueueWindow.center().open();
addToQueueWindow.wrapper
.find(".add-confirm,.add-cancel")
.click(function (e) {
if ($(this).hasClass("add-confirm")) {
$.ajax({
url: '@Url.Action("AddToQueueHandler", "ManageMessageState")',
type: 'POST',
data: { Id: $("#MessageidInput").val() },
complete: function (event, ui) {
$("#QueueContentGrid").data("kendoGrid").dataSource.read();
}
});
}
addToQueueWindow.close();
});
})
);
最佳答案
对话框小部件的 DOM 元素是在调用 .kendoWindow()
时创建的,但每次单击按钮打开窗口时,都会添加另一个 .click()
> 窗口中按钮的处理程序。当窗口关闭时,这些 DOM 元素不会被删除。它们只是被隐藏了。因此,您要向相同的 DOM 元素添加多个点击处理程序。
你应该移动:
addToQueueWindow.wrapper
.find(".add-confirm,.add-cancel")
.click(function (e) {
在打开窗口按钮的点击处理程序之外。只需在调用 .kendoWindow()
关于jquery - Kendo ui 点击事件多次触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21981738/