jqgrid:获取单击复选框的行的id

jqgrid:获取单击复选框的行的id,jqgrid,Jqgrid,加载网格后,我将单击处理程序绑定到包含复选框的列 $("#mygrid td input").each(function () { $(this).click(function () { }); }); 在这个点击处理程序中是否有一种巧妙的方法来获取与复选框所在行对应的记录的pk/id,以便我可以用它调用服务器?您可以使用事件的参数: $(“#mygrid td input”)。每个(函数(){ $(此)。单击(函数(e){ //e.指向DOM元素的目标点 var tr=$(e.targe

加载网格后,我将单击处理程序绑定到包含复选框的列

$("#mygrid td input").each(function () {
 $(this).click(function () {
 });
});
在这个点击处理程序中是否有一种巧妙的方法来获取与复选框所在行对应的记录的pk/id,以便我可以用它调用服务器?

您可以使用事件的参数:

$(“#mygrid td input”)。每个(函数(){
$(此)。单击(函数(e){
//e.指向DOM元素的目标点
var tr=$(e.target).closest('tr');
警报(“当前rowid=“+tr[0].id”);
});
});
您应该只找到单击的
元素所属的
(表行)元素。
元素的
id
是填充网格时使用的rowid

$("#treegrid").jqGrid({
        url: '${createLink(controller:"poa", action:"obtEstrucAreasDep")}',
        datatype: 'json',
        postData: {
            gestion: function() { return ${gestion}; }
        },
        mtype: 'GET',
        colNames: ["ID", "Nombre de Area", "Sigla", "Nivel", "Gener.HR", "Recep.HR", "Activo"],
        colModel: [
            {name:'id',    index:'id',    width:1,  hidden:true,  key:true},
            {name:'area',  index:'area',  width:95, hidden:false, sortable:true},
            {name:'sigla', index:'sigla', width:25, hidden:false, sortable:false, align:'center'},
            {name:'nivel', index:'nivel', width:1,  hidden:true,  align:'center'},
            {name:'genhr', index:'genhr', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}},
            {name:'recep', index:'recep', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}},
            {name:'activ', index:'activ', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}}
        ],
        treeGridModel: 'adjacency',
        height: 'auto',
        width: '500', //360
        treeGrid: true,
        ExpandColumn: 'area',
        ExpandColClick: true,
        caption: '${titulo}'+' - GESTION '+'${gestion}',
        onSelectRow: function(id){operRowJQGrid(id);}
    });
这是由JuanFer提供的

    jQuery(document).delegate('#treegrid .jqgrow td input', 'click', function(e){

        var tr = $(e.target).closest('tr');
        var rowid = tr[0].id;

        var $myGrid = jQuery('#treegrid');
        var i = $.jgrid.getCellIndex($(e.target).closest('td')[0]);
        var cm = $myGrid.jqGrid('getGridParam', 'colModel');
        var colName = cm[i].name;

        var y = $(this).val();
        var x = false

        if(y=='false'){
            $(this).val('true');
        }else{
            $(this).val('false');
        }
        x = $(this).val();
        alert("check = "+x+", id = "+rowid+", col name = "+colName);
    });

你是个救生员@阿梅特:不客气!答案很古老。今天,我建议最好在选择行之前使用
来检测网格内部的任何单击。
e.target
是单击的元素。可以检测单击的行和列,并在单击复选框的情况下使用
.is(“:checked”)
。我的一个例子说明了我的意思。
    jQuery(document).delegate('#treegrid .jqgrow td input', 'click', function(e){

        var tr = $(e.target).closest('tr');
        var rowid = tr[0].id;

        var $myGrid = jQuery('#treegrid');
        var i = $.jgrid.getCellIndex($(e.target).closest('td')[0]);
        var cm = $myGrid.jqGrid('getGridParam', 'colModel');
        var colName = cm[i].name;

        var y = $(this).val();
        var x = false

        if(y=='false'){
            $(this).val('true');
        }else{
            $(this).val('false');
        }
        x = $(this).val();
        alert("check = "+x+", id = "+rowid+", col name = "+colName);
    });