如果label = empty,则显示一个div并隐藏另一个div

时间:2018-01-19 13:47:19

标签: javascript jquery html css

如果标签为空(我告知用户没有找到互联网连接),我已经能够有效地显示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);

3 个答案:

答案 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);

价:

the empty() function

the html() function