$(".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();
与循环无关。
感谢大家的帮助。
答案 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();
});