3
$(".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-この問題を回避する簡単な方法はありますか?

Breaking = 2番目のループの後の機能$globalTabs。これは、定義されていないため、トリガーされなくなりました。

愚かな間違い:

2番目のループの後、このセクションではセレクターを2回参照していました。

したがって、$(".globalTabs").each(function(){これではもちろん機能しません。 $globalTabs.find(".globalTabs .ui-tabs-nav li").hide();

ループとは何の関係もありませんでした。

皆さんの助けに感謝します。

4

2 に答える 2

5

thisからの値でpassの値を使用する代わりに.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
    }


});
于 2012-08-20T13:58:02.420 に答える
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();
});
于 2012-08-20T13:57:28.833 に答える