。click事件令人困惑的行为

时间:2014-07-28 20:19:28

标签: javascript jquery html

我对javascript的foreach行为感到非常困惑, 我正在使用.quach的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似乎总是最后一次循环运行。 我不知道任何其他语言的这种行为。 那么我做错了什么?

1 个答案:

答案 0 :(得分:1)

正如@Karl所提到的,您需要将var添加到您的变量中,如下所示:

var ribbonMenu= new RibbonMenu($(this));

原因是因为在javascript中,当你没有明确地声明变量是本地的时,它是全局的;你需要对此非常小心,因为它是一种确定的方法来获取bug,如你所知;)