我在Ext.tree.Panel中添加了两个侦听器’check change’和’item click’.但我注意到了,
当检查发生变化时,它也会触发项目点击事件.我希望阻止此项目点击事件.
listeners : {
checkchange: function(node, checked, eOpts){
alert('this is check change');
},
itemclick : function(obj, record, item, index, e, eOpts){
alert('this is item click');
}
}
这是Ext树中的监听器.在检查更改时,我希望只有“这是检查更改”此警报.怎么可能?
最佳答案 您可以使用事件getTarget方法来检查复选框的DOM.完整的解决方案如下:
onItemClick: function( self, record, item, index, eventObj, eOpts ) {
var colIdx = eventObj.getTarget('.x-grid-cell').cellIndex;
if (colIdx===0) { // Apply item event click to the first column only
var node=self.getTreeStore().getNodeById(record.internalId);
if (!eventObj.getTarget('.x-tree-checkbox',1,true)) {
record.set('checked',!record.get('checked'));
this.fireEvent('checkchange', node, record.get('checked'));
}
}
}