EasyUI Combogrid中如何获取组件ID属性?请求技术帮助
解决EasyUI Combogrid onSelect事件中获取组件ID的问题
你遇到的问题我看明白了——在onSelect事件里想拿到Combogrid的ID(也就是mustGetID),但当前写法行不通对吧?我帮你分析下问题,再给你几个可行的解决方案:
首先要指出你代码里的两个小问题:
alert($(this).attr('id');少了一个闭合括号,语法错误会直接导致这段代码执行失败;- 在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
相关产品推荐
相关产品推荐

