Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery-可重用的jqGrid创建函数触发';加载完成';最后一个使用它的表的_Javascript_Object_Jqgrid_Encapsulation - Fatal编程技术网

Javascript JQuery-可重用的jqGrid创建函数触发';加载完成';最后一个使用它的表的

Javascript 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

我创建了一个可重用的函数来创建jqGrid

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');
}