我对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/

10-11 05:40