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