Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当innerHTML为空时隐藏div_Javascript_Jquery_Innerhtml - Fatal编程技术网

Javascript 当innerHTML为空时隐藏div

Javascript 当innerHTML为空时隐藏div,javascript,jquery,innerhtml,Javascript,Jquery,Innerhtml,我对jQuery非常陌生,但我正在尝试获得一个代码设置,它在'innerHTML'为空时隐藏一个div。我试着使用下面的代码。但它不起作用!我的错在哪里 if (($("#php-errors").html).length) { $("#php-errors").css("display", "block"); } else { $("#php-errors").css("display", "none"); } 更正: ($(“#php errors”).html)。长度应为

我对jQuery非常陌生,但我正在尝试获得一个代码设置,它在'innerHTML'为空时隐藏一个div。我试着使用下面的代码。但它不起作用!我的错在哪里

if (($("#php-errors").html).length) {
    $("#php-errors").css("display", "block");
}
else {
    $("#php-errors").css("display", "none");
}
更正:


($(“#php errors”).html)。长度
应为
$(“#php errors”).html()。长度

对于您的情况,似乎您只需要:

$("#php-errors").toggle();
我看不出任何情况下,您希望将显示设置为
block
none
(如果尚未设置)


你确定你的逻辑不是多余的吗?

我想你错过了比较,试试这个

if ($("#php-errors").html() == "") {
    $("#php-errors").css("display", "block");
}
else {
    $("#php-errors").css("display", "none");
}

您可以像这样清理代码

它还使用
innerHTML
属性作为三元表达式的条件部分。如果有任何内容,它将返回并设置为“block”,如果没有,则设置为“none”


更新:

如果这只在页面加载时运行,您可以先将其设置为“block”,然后执行此操作

$("#php-errors:empty").hide();

或者相反,将其设置为“无”,如果不为空则显示

$("#php-errors:not(:empty)").show();

一行,使用
.show()
.hide()
方法:

var hasCont = $("#php-errors").contents().length ? $("#php-errors").show() : $("#php-errors").hide();
使用三元运算符表示:

  • (定义var)语句
  • 如果语句为真,则执行操作。
  • 如果声明为假,则采取行动

一个好的做法是将您的元素缓存在一个var中,让我们称之为
var$el
,并像以下那样使用它:

var $el = $("#php-errors");
var hasCont = $el.contents().length ? $el.show() : $el.hide();
更具可读性,并且
它将为您节省一些微处理时间;)但它确实有助于实现跨功能的可重用性(如果在功能之外定义)。

我会这样做:

var $php_errors = $("#php-errors");

if ($php_errors.is(":empty")) {
    $php_errors.hide()
}
else {
    $php_errors.show();
}

希望它能有所帮助

只需添加css,而不需要javascript,以防其他人需要它:

.php-errors:empty { display: none; }
将匹配:

<div class="php-errors"></div>
<div class="php-errors"><!-- test --></div>

不匹配:

<div class="php-errors"> </div>
<div class="php-errors">
   <!-- test -->
</div>

<div class="php-errors">
</div>


来源:

检查其“虚假性”就足够了,为什么不使用:$el.is(“:empty”)?
<div class="php-errors"></div>
<div class="php-errors"><!-- test --></div>
<div class="php-errors"> </div>
<div class="php-errors">
   <!-- test -->
</div>

<div class="php-errors">
</div>