var CheckboxGroup={
 id:'superOptions',
 value:initSuperValue,
 xtype:'checkboxgroup',
 columns:3,
defaults:{
name:'superOptions'
},
items: [
{ id:'1', boxLabel: '用户编辑',inputValue: '1' }
]

};
Ext.getCmp("superOptions").addListener("change",function(){alert(1)});
这个方法可以添加事件但是调用
Ext.getCmp("superOptions").removeListener("change",function(){alert(1)});
这个change事件还是有效

解决方案 »

  1.   

    文档中:removeListener( String eventName, Function fn, [Object scope] )
    fn : Function 
    The handler to remove. This must be a reference to the function passed into the addListener call.你的两个function(){alert(1)} 可不是一个哦!!!单独提出来
      

  2.   

    楼上的都说了
    把function(){alert(1)拿出来 用引用的形式
      

  3.   

    Ext.getCmp("superOptions").removeListener("change",function(){alert(2)}());
    谢谢,但是我像上边用了引用,alert也能输出,change事件还是有响应
      

  4.   


    Ext.getCmp("superOptions").removeListener("change",function(){alert(2)}());
    谢谢,但是我像上边用了引用,alert也能输出,change事件还是有响应
      

  5.   


    是不是最后那个可选参数,要选择作用域的,我用purgeListeners()函数就可以移除change事件
      

  6.   

    引用
    var _change=function(){
    ……
    }
    Ext.getCmp("superOptions").addListener("change",_change);
    Ext.getCmp("superOptions").removeListener("change",_change);
    这样,不是长的一样就是一个function
    一般会把这个function放在某个对象里面.
      

  7.   

    谢谢,解决了,但原理还是不太懂,javascript太深奥,跟高级程序语言有好多不一样的地方