jquery嵌套.each

时间:2012-08-20 13:54:02

标签: jquery loops for-loop foreach each

$(".globalTabs").each(function(){
    var $globalTabs = $(this);
    var parent = $globalTabs.parent('form');

    //initiate jQuery UI tabs
    $globalTabs.tabs();

    var ATBwidth = $globalTabs.parent().outerWidth();
    var tabsWidth = 0;

    //get total width of all li/tabs
    $(".globalTabs .ui-tabs-nav li").each(function() {
     tabsWidth += $(this).outerWidth();
    });


    if(tabsWidth >= ATBwidth){
       //doing something here
    }


});

由于嵌套.each而破坏 - 是否有一个解决此问题的简单方法?

break =第二个循环后的功能,引用$globalTabs不再触发,因为它未定义。

愚蠢的错误:

在第二个循环之后,在本节中我指的是选择器两次。

所以,$(".globalTabs").each(function(){这当然不起作用: $globalTabs.find(".globalTabs .ui-tabs-nav li").hide();

与循环无关。

感谢大家的帮助。

2 个答案:

答案 0 :(得分:5)

而不是使用this的值传递来自.each(index, value)

的值
$(".globalTabs").each(function(index, value){
    var $globalTabs = $(value);
    var parent = $globalTabs.parent('form');

    //initiate jQuery UI tabs
    $globalTabs.tabs();

    var ATBwidth = $globalTabs.parent().outerWidth();
    var tabsWidth = 0;

    //get total width of all li/tabs
    $(".globalTabs .ui-tabs-nav li").each(function(index, secondValue) {
     tabsWidth += $(secondValue).outerWidth();
    });


    if(tabsWidth >= ATBwidth){
       //doing something here
    }


});

答案 1 :(得分:0)

也许您的多个this变量混淆了?尝试在回调函数中使用参数(http://api.jquery.com/each/):

$(".globalTabs").each(function(i,tab){
    var $globalTabs = $(tab);

// ...

$(".globalTabs .ui-tabs-nav li").each(function(j,myli) {
    tabsWidth += $(myli).outerWidth();
});