Javascript 当innerHTML为空时隐藏div
我对jQuery非常陌生,但我正在尝试获得一个代码设置,它在'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)。长度应为
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>