jquery - Kendo ui 点击事件多次触发

标签 jquery kendo-ui

我在使用 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/

相关文章:

javascript - Kendo GRID - 单击 "Add new row"按钮后获取 kendo grid Uncaught TypeError : Cannot read property of 'name' null

kendo-ui - Kendo UI DatePicker - 获取先前的值

Angularjs Kendo Treeview 未在 Kendo 弹出窗口中显示复选框

jquery - 在 TypeScript 中使用 jQuery $ 前缀

javascript - 调用变量 jQuery 函数

javascript - CSS3 : Is it possible to fire a transition on an element when the page is scrolled down the first viewport?

javascript - 如何在 Kendo UI 编辑器中创建浏览文件按钮

jquery - 如何让 jQuery 验证生成与服务器端 ASP .NET MVC 验证相同的标记?

javascript - function($) 在 javascript 中是什么意思?

asp.net-mvc-4 - Kendo UI 窗口 + PartialView