使用 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);
}
}
我有 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);
}
}