如果标签为空(我告知用户没有找到互联网连接),我已经能够有效地显示div。这就是我想要的。
但是,如果label为空,我还想隐藏#activateform
。
当我的当前设置#activateform
在函数运行时被隐藏,即使填充的标签不是我想要的。我尝试使用if语句(参见底部代码块)但是还没有能够使它工作。
这是我的HTML:
<div class="form-group" style="display:none">
<label id="internet_ipaddr" for="internet_ipaddr" class="tbh"></label>
<h4> You don't seem to be connected to the internet </h4>
</div>
<div id="activateform"> This has to be hidden if label = empty </div>
我的剧本:
$(document).ready(function(){
setTimeout(function(){
$("div.form-group label.tbh:empty").parent().show();
$("#activateform").hide();
},2000);
});
我尝试只在label = empty时才能创建它:
$(document).ready(function(){
setTimeout(function(){
if $("div.form-group label.tbh").empty() {
$("#activateform").hide();
}
},2000);
答案 0 :(得分:1)
您可以结合使用.is()
方法和:empty
selector
setTimeout(function() {
var elem = $("div.form-group label.tbh");
if (elem.is(':empty')) {
elem.parent().hide();
$("#activateform").hide();
} else {
elem.parent().show();
}
//Rest of your code
}, 2000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group" style="display:none">
<label id="internet_ipaddr" for="internet_ipaddr" class="tbh"></label>
<h4> You don't seem to be connected to the internet </h4>
</div>
答案 1 :(得分:1)
empty()
方法不用于检查元素是否为空,而是用于删除其所有内容(即清空它)。要检查它是否为空,您可以使用is(':empty')
,类似于您第一次尝试使用的内容。
注意:我不知道为什么你使用setTimeout
将它延迟2秒,但我保留了该代码。
$(document).ready(function() {
setTimeout(function() {
var label = $("div.form-group label.tbh");
if ($("div.form-group label.tbh").is(':empty')) {
label.parent().show();
$("#activateform").hide();
}
}, 2000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group" style="display:none">
<label id="internet_ipaddr" for="internet_ipaddr" class="tbh"></label>
<h4> You don't seem to be connected to the internet </h4>
</div>
<div id="activateform"> This has to be hidden if label = empty</div>
答案 2 :(得分:0)
empty()
函数删除所选元素中的所有内容,不返回布尔,但删除所有内容后删除所选元素。所以你的条件if $("div.form-group label.tbh").empty() {
永远不会是真的,因为标签元素不是假的。
您可以使用html()
函数返回元素的内容,并将此值与空字符串进行比较,如下所示:
$(document).ready(function(){
setTimeout(function(){
if ($("div.form-group label.tbh").html() == "") {
$("#activateform").hide();
}
},2000);
价: