请检查我的jsfiddle以检查整个代码。如果div类timeimg为空或不存在带有status-1或status-2类的ledBar,我试图隐藏整个contentMachine div。
我现在有ff代码:
$(function() {
function showHideEmptyBlocks() {
$(".contentMachine").each(function() {
// var isVisible=$(this).find(".timeimg").text() && $(this).find(".timeimg").text().length;
var display=$(this).find(".ledBar").is('.status-1, .status-2');
//console.log('display >' , display);
if(display) {
$(this).show();
} else {
$(this).hide();
}
})
setTimeout(function(){
showHideEmptyBlocks();
},1);
}
showHideEmptyBlocks();
})
如果在ledbar类中没有status-2或status-1类,它现在正在隐藏...我只想添加一个逻辑,当span类timeimg为EMPTY时也将其隐藏起来
答案 0 :(得分:1)
find
返回一个jQuery Object
。
更改-
if (display) {...}
到
if (display.length > 0) {...}
答案 1 :(得分:0)
要确定跨度内是否没有文本,请使用
.text() === ""
或
.text() !== ""
取决于您是否想知道它是空的(===""
)还是不空的(!==""
)。
更新的代码:
var display = $(this).find(".ledBar").is('.status-1, .status-2')
|| $(this).find(".timeimg").text() !== "";
$(this).toggle(display);
上面说:“显示是否有.status-1 / 2或文本不为空”。相反,这与“如果不是.status-1 / 2且文本为空,则隐藏”相同。
如果这不符合您的确切要求,则可以将||
更改为&&
,将===
更改为!==
,以获得所需的确切逻辑。尚不清楚“好”是指其中一个,还是必须两者都表示。
您的逻辑与您的措辞相反(如果不是,请显示,如果不是,则隐藏)。使逻辑与您的措辞匹配更容易,例如:
var hide = !$(this).find(".ledBar").is('.status-1, .status-2')
&& $(this).find(".timeimg").text() === "";
$(this).toggle(!hide);
其中表示:“隐藏是否不是status1 / 2且文本为空”
var hide = !$(this).find(".ledBar").is('.status-1, .status-2')
|| $(this).find(".timeimg").text() === "";
$(this).toggle(!hide);
其中说:“隐藏是否不是status1 / 2或文本为空”