遇到一个很是郁闷的问题 搞了一晚 大家看看我的代码:
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]
道理很简单啊,一看就知道什么问题了.呵呵
你每次都执行上面的代码,每次都注册一次单击事件,当然会越来越多啦.