Javascript JQuery-可重用的jqGrid创建函数触发';加载完成';最后一个使用它的表的
我创建了一个可重用的函数来创建jqGridJavascript JQuery-可重用的jqGrid创建函数触发';加载完成';最后一个使用它的表的,javascript,object,jqgrid,encapsulation,Javascript,Object,Jqgrid,Encapsulation,我创建了一个可重用的函数来创建jqGrid function createJqGrid(){ $("#" + gTableId).jqGrid({ datastr: jsonData, datatype: 'jsonstring', jsonReader: { repeatitems: false, root: function(obj) { return obj; }}, headertit
function createJqGrid(){
$("#" + gTableId).jqGrid({
datastr: jsonData,
datatype: 'jsonstring',
jsonReader: { repeatitems: false, root: function(obj) { return obj; }},
headertitles: true,
sortable: true,
rownumbers: isRowNum,
colNames: colHeadNames,
colModel: colModel,
rowNum: jsonData.length,
width: viewableWidth,
height: viewableHeight,
shrinkToFit: isShrink,
scrollOffset: 0,
onSelectRow: func,
loadComplete: function(data) {
alert(gTableId);
}
});
}
此函数和所有参数设置封装在MyObject
中。我的四个jsp都有自己独特的MyObject
实例。但是,当我触发jqGrid的重载Grid时,使用此函数的最后一个表的id将被警告
给定:table1在table1.jsp中
table2在table2.jsp中
table3在table3.jsp中
table4在table4.jsp中
$(“#表1”).trigger(“重载网格”)代码>警报“表4”
$(“#表2”).trigger(“重载网格”)代码>警报“表4”
$(“#表3”).trigger(“重载网格”)代码>警报“表4”
$(“#表4”).trigger(“重载网格”)代码>警报“表4”
似乎正在触发上次创建的表的loadComplete
。为什么会这样?我相信触发的loadComplete
是正确的,问题更多的是JavaScript的逻辑。示例中缺少变量声明部分,但它看起来像是一个全局变量。在这种情况下,对它的每次调用都将始终获得其最后一个值(并且您的警报始终采用当前值gTableId
,它不会以任何方式冻结)。请尝试像这样修改您的loadComplete
,以验证:
loadComplete: function(data) {
alert($(this).attr('id');
}