Jquery 删除确认窗口 对 不 var-wnd; $(文档).ready(函数(){ wnd=$(“#modalWindow”).kendoWindow({ 标题:“删除确认”, 莫代尔:是的, 可见:假, 可调整大小:false, 宽度:300 }).数据(“kendoWindow”); }); 功能删除项(e){ e、 预防默认值(); var grid=此; var行=$(e.currentTarget).closest(“tr”); wnd.center().open(); $(“#是”)。单击(函数(){ 网格。移除(世界其他地区); wnd.close(); }); $(“#否”)。单击(函数(){ wnd.close(); }); }

Jquery 删除确认窗口 对 不 var-wnd; $(文档).ready(函数(){ wnd=$(“#modalWindow”).kendoWindow({ 标题:“删除确认”, 莫代尔:是的, 可见:假, 可调整大小:false, 宽度:300 }).数据(“kendoWindow”); }); 功能删除项(e){ e、 预防默认值(); var grid=此; var行=$(e.currentTarget).closest(“tr”); wnd.center().open(); $(“#是”)。单击(函数(){ 网格。移除(世界其他地区); wnd.close(); }); $(“#否”)。单击(函数(){ wnd.close(); }); },jquery,asp.net-mvc,asp.net-mvc-4,telerik,Jquery,Asp.net Mvc,Asp.net Mvc 4,Telerik,你好, 我使用的是一个带有自定义按钮列的Telerik网格,它打开一个窗口确认删除相关行。 当我单击一行的按钮并确认删除时,它工作正常。 当我单击一行的按钮时,取消删除,然后单击另一行的另一个按钮并提交删除它删除网格中的每一行 我能做些什么来解决这个问题 关于每次调用DeleteItem函数时,您都在为#yes按钮设置处理程序以删除特定行。即使取消并选择其他行,处理程序也已设置,并将在以后单击按钮时运行 为了避免这种情况,您应该在设置新的事件处理程序之前清除以前设置的click事件处理程序: &

你好,

我使用的是一个带有自定义按钮列的Telerik网格,它打开一个窗口确认删除相关行。 当我单击一行的按钮并确认删除时,它工作正常。 当我单击一行的按钮时,取消删除,然后单击另一行的另一个按钮并提交删除它删除网格中的每一行

我能做些什么来解决这个问题


关于

每次调用
DeleteItem
函数时,您都在为
#yes
按钮设置处理程序以删除特定行。即使取消并选择其他行,处理程序也已设置,并将在以后单击按钮时运行

为了避免这种情况,您应该在设置新的事件处理程序之前清除以前设置的click事件处理程序:

<div id="modalWindow">
    <button id="yes" class="k-button">Yes</button>
    <button id="no" class="k-button">No</button>
</div>
<script>
var wnd;
$(document).ready(function() {
    wnd = $("#modalWindow").kendoWindow({
        title: "Delete confirmation",
        modal: true,
        visible: false,
        resizable: false,
        width: 300
    }).data("kendoWindow");

});

function DeleteItem(e) {
    e.preventDefault();

    var grid = this;
    var row = $(e.currentTarget).closest("tr");
    wnd.center().open();

    $("#yes").click(function() {
        grid.removeRow(row);
        wnd.close();
    });

    $("#no").click(function() {
        wnd.close();
    });
}
</script>

尝试在
wnd.close()之后返回
false
,在
no
中单击!!提供js小提琴?每次打开窗口时,您都在重新绑定
单击
事件。实际上,它不是重新绑定,而是添加相同的事件处理程序。这意味着在第二次
单击事件时,您将调用句柄两次,第三次调用句柄三次,依此类推。
function DeleteItem(e) {
    e.preventDefault();

    var grid = this;
    var row = $(e.currentTarget).closest("tr");
    wnd.center().open();

    $("#yes").unbind('click').click(function () {
        grid.removeRow(row);
        wnd.close();
    });

    $("#no").unbind('click').click(function () {
        wnd.close();
    });
}