内部div为空时如何隐藏div?

时间:2019-05-23 12:02:38

标签: javascript jquery

请检查我的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时也将其隐藏起来

2 个答案:

答案 0 :(得分:1)

find返回一个jQuery Object

更改-

if (display) {...}

if (display.length > 0) {...}

请参阅-https://jsfiddle.net/hexa5072/1/

工作小提琴-https://jsfiddle.net/pLkqh0d7/

答案 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或文本为空”