使用jqGrid和jQuery时,事件不在函数内触发

jal*_*rin 1 javascript jquery jqgrid

我是javascript,jQuery和jqGrid的新手,所以这可能是一个非常基本的问题.

为什么事件在这里正确触发,触发警报:

        $("#list").jqGrid({loadComplete: alert('load complete')
            });
Run Code Online (Sandbox Code Playgroud)

但是当警报在函数内时不在这里?

        $("#list").jqGrid({loadComplete:
                               function() {
                                    alert('load complete');
                               }
            });
Run Code Online (Sandbox Code Playgroud)

我猜是有一些非常基本的东西我还没有(还)理解.

谢谢.--Jeff

Ole*_*leg 6

发布链接http://ccclients.com/TEST/TEST.php后,我了解您所犯的错误.您不应该在两个调用中分隔jqGrid定义:

jQuery("#list").jqGrid({
    datatype: 'xml',
    mtype: 'GET',
    loadonce: true,
    // other parameters
    caption: 'My first grid', 
    xmlReader: { 
        root: "export", 
        row: "row",
        repeatitems: false
    }
 });
Run Code Online (Sandbox Code Playgroud)

$("#list").jqGrid({loadComplete: 
            function() {
                alert('load complete')
            }
});
Run Code Online (Sandbox Code Playgroud)

但定义loadComplete为以下一个调用的一部分$("#list").jqGrid({ ... });:

jQuery("#list").jqGrid({
    datatype: 'xml',
    mtype: 'GET',
    loadonce: true,
    // other parameters
    caption: 'My first grid', 
    xmlReader: { 
        root: "export", 
        row: "row",
        repeatitems: false
    },
    loadComplete: function(data) {
        alert('load complete');
    }
 });
Run Code Online (Sandbox Code Playgroud)

如果以后必须设置事件处理程序,则应使用setGridParam方法(请参阅实例化后向jqGrid添加事件处理程序)

此外,我严格不同意Groxx的答案.loadComplete将为所有数据类型调用该函数(包括'xml','json','local'等).如何在http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events#execution_order下的文档中看到该函数loadComplete是在数据加载后在网格中进行一些修改的理想位置(或刷新).我永久使用这个功能.如果需要加载非常奇特的数据(xml和json等),使用数据类型函数是最后的方法.对于XML和JSON数据的加载有很多的中的jqGrid定制功能(见设置的jQuery的jqGrid执行的内容类型的请求例如).所以你可以自定义jQurey.ajax调用并转换用作输​​入和输出的数据jQurey.ajax几乎就像你想要的那样.