jqGrid中的自定义格式化程序,它调用jQuery函数

我有一个带有自定义格式化程序的jqGrid,它返回两个复选框:

jQuery(function($){ $("#gridAgenda").jqGrid({ ... colModel: [ ..., "asiste", ... ], colModel:[ ..., {name:'asiste',formatter:asisteFormater}, ... ] ... }); } function asisteFormater (cellvalue, options, rowObject) { return "Sí No"; } $("#asisteSi").click(function () { ... } 

但是我想在检查两个复选框中的任何一个时调用jQuery函数,以评估检查了哪一个并调用ajax函数。 我认为问题是,在创建jqGrid之前asisteSi不存在,所以我不能这样做。

有人能帮我吗?

您应该将回调附件放gridComplete格定义的gridComplete选项中,如下所示:

 $('#gridAgenda').jqGrid({ ... gridComplete: function () { $("#asisteSi").click(function () { // do your deed }); } }); 

补充

顺便说一句,如果网格中有多行,则不应使用asisteSi作为您的id,因为它在页面中不是唯一的,这会导致未定义的行为。

最后我解决了这个问题:

 gridComplete: function () { var rowData = $("#gridAgenda").getRowData(); for (var i = 0; i < rowData.length; i++) { var asisteSi="#asisteSi"+rowData[i].id; var asisteNo="#asisteNo"+rowData[i].id; $(asisteSi).click(function(){ var actualSi = "#"+this.id; var actualNo = actualSi.replace("asisteSi","asisteNo"); if($(actualSi).prop('checked')){ $(actualNo).prop('checked', false); } //TODO:llamada ajax }); $(asisteNo).click(function(){ var actualNo = "#"+this.id; var actualSi = actualNo.replace("asisteNo","asisteSi"); if($(actualNo).prop('checked')){ $(actualSi).prop('checked', false); } //TODO:llamada ajax }); } } 

问题是$(asisteSi)在点击时有最后一个值,所以我必须得到当前的Id