我是 javascript、jQuery 和 jqGrid 的新手,所以这可能是一个非常基本的问题。
为什么事件在这里正确触发,触发警报:
$("#list").jqGrid({loadComplete: alert('load complete')
});
但当警报在函数内部时不在此处?
$("#list").jqGrid({loadComplete:
function() {
alert('load complete');
}
});
我猜有些非常基本的东西我(还)不明白。
谢谢。 --杰夫
最佳答案
发布链接后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
}
});
和
$("#list").jqGrid({loadComplete:
function() {
alert('load complete')
}
});
但是将 loadComplete
定义为 $("#list").jqGrid({ ... }); 的 one 调用的一部分;
喜欢以下内容:
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');
}
});
如果您稍后必须设置事件处理程序,您应该使用 setGridParam
方法(参见 Add an event handler to jqGrid after instantiation)
此外,我完全不同意 Groxx 的回答。将为所有数据类型(包括“xml”、“json”、“local”等)调用函数 loadComplete
。如何在 http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events#execution_order 下的文档中查看函数 loadComplete
是在加载(或刷新)数据后在网格中进行一些修改的完美位置。我永久使用此功能。如果您需要加载非常奇特的数据(既不是 xml 也不是 json 等),则使用数据类型函数是最后一种方法。对于 xml 和 json 数据的加载,jqGrid 中有很多自定义功能(参见 Setting the content-type of requests performed by jQuery jqGrid 例如)。因此,您可以自定义 jQurey.ajax
调用,并根据需要转换用作 jQurey.ajax
输入和输出的数据。
关于javascript - 使用 jqGrid 和 jQuery 时事件不会在函数内触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3515715/