extjs – 如何防止Ext Js Tree中的检查更改中的itemclick事件

我在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'));
        }
    } 
}
点赞