我对javascript的foreach行为感到非常困惑,
我正在使用.each jquery设置一些事件侦听器:
$(".xRibbonMenu").each(function(index){
ribbonMenu= new RibbonMenu($(this));
$(this).find(".xRibbonTab").each(function(index){
ribbonMenu.tabs.push($(this));
$(this).click(function(){
ribbonMenu.div.find(".xRibbonTabActive").removeClass("xRibbonTabActive");
$(this).addClass("xRibbonTabActive");
ribbonMenu.div.find(".xRibbonContentActive").removeClass("xRibbonContentActive");
});
});
$(this).find(".xRibbonContent").each(function(index){
ribbonMenu.contents.push($(this));
});
RibbonMenus.push($(this));
});
但是如果调用该事件,ribbonMenu似乎总是循环的最后一次运行。
我不知道这种行为来自任何其他语言。
所以我做错了什么?
最佳答案
如@Karl所述,您需要将var
添加到变量中,如下所示:
var ribbonMenu= new RibbonMenu($(this));
这样做的原因是因为在javascript中,当您没有显式声明局部变量时,它是全局变量。您需要对此非常小心,因为正如您所知,这是获取错误的一种肯定方法;)
关于javascript - .each令人困惑的点击事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25003618/