You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EasyUI Combogrid中如何获取组件ID属性?请求技术帮助

解决EasyUI Combogrid onSelect事件中获取组件ID的问题

你遇到的问题我看明白了——在onSelect事件里想拿到Combogrid的ID(也就是mustGetID),但当前写法行不通对吧?我帮你分析下问题,再给你几个可行的解决方案:

首先要指出你代码里的两个小问题:

  1. alert($(this).attr('id'); 少了一个闭合括号,语法错误会直接导致这段代码执行失败;
  2. 在EasyUI的onSelect回调里,this指向的是当前选中的数据行DOM元素,不是Combogrid组件本身,所以用$(this)自然拿不到组件的ID。

方法一:直接引用已知的组件ID(最简单)

既然你已经明确组件ID是mustGetID,可以直接在回调里使用这个值:

$('#mustGetID').combogrid({
    panelWidth:500,
    panelHeight:250,
    url: '<?= $url; ?>get_item.php',
    queryParams: { id_item: row.id_item },
    idField:'id_item',
    textField:'name_item',
    mode:'remote',
    fitColumns:true,
    nowrap: false,
    columns:[[
        {field:'id_item',title:'id_item',width:100},
        {field:'name_item',title:'name_item',width:200}
    ]],
    onSelect: function(index,row){
        // 直接使用已知的组件ID
        alert('mustGetID');
    }
});

方法二:通过DOM层级关系动态获取(更灵活)

如果组件ID是动态生成的,或者你想让代码更通用,可以通过行元素找到父级的Combogrid组件:

$('#mustGetID').combogrid({
    panelWidth:500,
    panelHeight:250,
    url: '<?= $url; ?>get_item.php',
    queryParams: { id_item: row.id_item },
    idField:'id_item',
    textField:'name_item',
    mode:'remote',
    fitColumns:true,
    nowrap: false,
    columns:[[
        {field:'id_item',title:'id_item',width:100},
        {field:'name_item',title:'name_item',width:200}
    ]],
    onSelect: function(index,row){
        // 通过行元素找到Combogrid的根DOM节点
        var gridRoot = $(this).closest('.combo-grid').prev();
        var gridId = gridRoot.attr('id');
        alert(gridId);
    }
});

方法三:提前缓存组件对象(最稳妥)

把Combogrid的jQuery对象提前存起来,回调里直接引用:

// 先缓存组件对象
var $combogrid = $('#mustGetID');

$combogrid.combogrid({
    panelWidth:500,
    panelHeight:250,
    url: '<?= $url; ?>get_item.php',
    queryParams: { id_item: row.id_item },
    idField:'id_item',
    textField:'name_item',
    mode:'remote',
    fitColumns:true,
    nowrap: false,
    columns:[[
        {field:'id_item',title:'id_item',width:100},
        {field:'name_item',title:'name_item',width:200}
    ]],
    onSelect: function(index,row){
        // 直接从缓存的对象里拿ID
        alert($combogrid.attr('id'));
    }
});

记得把你原来代码里的语法错误补上,确保alert语句的括号是闭合的,不然所有逻辑都跑不起来哦。

内容的提问来源于stack exchange,提问作者ridwannhidayat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:45:18