使用 Kendo 网格 - onclick 需要额外的点击来调用 jquery 方法

Using Kendo Grid - onclick requires an extra click to call a jquery method

我有 7 列(使用 html Kendo 网格),ID 列是每行的 PK 及其可见(假)。 所以.. 当你点击任何 "Name" 数据时,它会抓取你所选行的 PK(不可见的 ID),然后会弹出一个模态屏幕,以便你可以看到更详细的信息。

目前,它按预期工作,但是,当页面第一次加载时,我必须双击它才能显示模态屏幕。一旦模式屏幕显示,之后,onclick 事件将按预期工作。

但我只是注意到,当我按下 F12 键查看日志时,每次 onclick 事件调用时点击次数都会增加(如... x2 x3 等)。

当我调试时,它到达我代码中的调试点但立即消失,所以我真的很难调查。

感谢您的帮助。

------有onclick事件的列--------

Columns(columns => {columns.Bound(o => o.SiteID).Visible(false); 
columns.Bound(o => o.Name).Title("Your Name").HeaderHtmlAttributes(new {title = "Name(s)"}).ClientTemplate("<a class='nameLink' onclick=\"EditSite(#:SiteID#);\" style='cursor:pointer;' SiteID=\'#=SiteID#\'>#=Name#</a>");

----Jquery onclick事件-----

function EditSite(SiteID) {
debugger;
$('.nameLink').on('click', function () {

    $('#popUpEdit').dialog({
        width: 1000,
        height: 920,
        show: 'fadein',
        hide: 'fadeout',
        buttons: { "Close": function () { $(this).dialog("close"); } },
        close: function () {
            $("#popUpEdit input").val("");
            $('#popUpEdit input').prop('checked', false);
            $('#statusMessage').html("");
        }
    });
    NameDetails(SiteID);
});

};

每次调用 EditSite 函数时,您都绑定了一个 onClick 函数。尝试使用 .off() 取消绑定任何现有的处理程序。

$('.nameLink').off().on('click', function () { }

也尝试包装您的函数,以便您可以传递您的 SiteID 参数。

(不确定正确的语法)

onclick="EditSite(#:SiteID#)"

封装函数

function EditSite(SiteID) {
  return function() {
      $('#popUpEdit').dialog({
        width: 1000,
        height: 920,
        show: 'fadein',
        hide: 'fadeout',
        buttons: { "Close": function () { $(this).dialog("close"); } },
        close: function () {
            $("#popUpEdit input").val("");
            $('#popUpEdit input').prop('checked', false);
            $('#statusMessage').html("");
        }
      });
      NameDetails(SiteID);
  }
}