Ext menu的click事件

遇到一个很是郁闷的问题 搞了一晚  大家看看我的代码:
NodeMenu.on("click",function(NodeMenu,MenuItem){//当子菜单被点击时触发该函数 
    var id=grid.getStore().getAt(biRow).data.id;//获取该条BI的ID值
    var groupid=grid.getStore().getAt(biRow).data.groupid;//获取该条BI的栏目ID值 
   var menuid=MenuItem.id;//获取子节点的ID值 
   var text=MenuItem.text;//获取子节点的text值 
    });

 这个函数就是当点击一个子菜单项的时候 触发该函数 可是我发现这个函数会循环执行 也就是我在里面放上一句alert 会弹出几次 而且点一次 alert就会增加一次  不知 道为什么 真是纳闷 大家遇到过这种情况吗

看来大家都没有遇到过呀 郁闷

冒泡了。
程序本身不合理,如果不愿重新设计整理的话就在on的方法体执行完后,将监听器卸了。
[code="java"]var f = function(NodeMenu,MenuItem){//当子菜单被点击时触发该函数
var id=grid.getStore().getAt(biRow).data.id;//获取该条BI的ID值
var groupid=grid.getStore().getAt(biRow).data.groupid;//获取该条BI的栏目ID值
var menuid=MenuItem.id;//获取子节点的ID值
var text=MenuItem.text;//获取子节点的text值
NodeMenu.un("click",f);
};

NodeMenu.on("click",f);[/code]

[quote]
NodeMenu.on("click",function(NodeMenu,MenuItem){//当子菜单被点击时触发该函数
var id=grid.getStore().getAt(biRow).data.id;//获取该条BI的ID值
var groupid=grid.getStore().getAt(biRow).data.groupid;//获取该条BI的栏目ID值
var menuid=MenuItem.id;//获取子节点的ID值
var text=MenuItem.text;//获取子节点的text值
});
[/quote]

道理很简单啊,一看就知道什么问题了.呵呵

你每次都执行上面的代码,每次都注册一次单击事件,当然会越来越多啦.