如何知道每个函数中特定div ID的div内容是否为空?

时间:2019-04-03 16:08:16

标签: jquery

我需要检查每个函数中特定的div id内容是否为空。如果div内容为empy,我想在此处输入“请单击此处以添加图像”文本消息。但是我的代码没有用。

我有一个类似这样的html:

<div class="wrapper">
<div class="list">
<div class="item"><div id="image">image</div></div>
<div class="item"><div id="test">test</div></div>
<div class="item"><div id="image"></div></div>
<div class="item"><div>test</div></div>
<div class="item"><div id="image"><a href="test.html"><img src="https://via.placeholder.com/100x75.png"></a></div></div>
</div>
</div>

我该怎么做:

<div class="wrapper">
<div class="list">
<div class="item"><div id="image">Please click to here for add a image</div></div>
<div class="item"><div id="test">test</div></div>
<div class="item"><div id="image">Please click to here for add a image</div></div>
<div class="item"><div>test</div></div>
<div class="item"><div id="image"><a href="test.html"><img src="https://via.placeholder.com/100x75.png"></a></div></div>
</div>
</div>

我的Jquery:

$(document).ready(function(){
$(".list #image").each(function() {
if($(this).is(':empty')) { $(".item #image").html("Please click to here for add a image"); }
});
});

我的jsfiddle代码在这里: https://jsfiddle.net/nmw4bad6/

3 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题

  1. 在这种情况下,使用重复的ID,它在上下文中应该是唯一的,只有第一个被选择。始终使用class对多个元素进行分组。
  2. 即使它为空,也要通过选择所有({$(".item #image").html(..))个元素来更新所有元素(即使当前代码中不会选择)。

要使其工作,请使用类对元素进行分组,然后使用:empty pseudo-class selector获取空元素。实际上,您无需使用each()方法,因为您要更新具有相同内容的所有元素。

$(document).ready(function() {
  $(".list .image:empty").html("Please click to here for add a image");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="list">
    <div class="item">
      <div class="image">image</div>
    </div>
    <div class="item">
      <div id="test">test</div>
    </div>
    <div class="item">
      <div class="image"></div>
    </div>
    <div class="item">
      <div>test</div>
    </div>
    <div class="item">
      <div class="image">
        <a href="test.html"><img src="https://via.placeholder.com/100x75.png"></a>
      </div>
    </div>
  </div>
</div>


更新::如果您无权访问后端代码并且需要使用重复的ID,请使用attribute equals selector而不是id selector并执行相同的操作。

$(document).ready(function() {
  $('.list [id="image"]').html("Please click to here for add a image");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
  <div class="list">
    <div class="item">
      <div id="image">image</div>
    </div>
    <div class="item">
      <div id="test">test</div>
    </div>
    <div class="item">
      <div id="image"></div>
    </div>
    <div class="item">
      <div>test</div>
    </div>
    <div class="item">
      <div id="image">
        <a href="test.html"><img src="https://via.placeholder.com/100x75.png"></a>
      </div>
    </div>
  </div>
</div>

答案 1 :(得分:0)

$(document).ready(function(){
 $(".list #image").each(function() {
  if($(this).html()=="") { $(this).html("Please click to here for add a image"); }
 });
});

您还可以像下面那样更改代码

if($(this).is(':empty')) { $(this).html("Please click to here for add a image"); }

答案 2 :(得分:0)

我刚刚修改了您的代码,以便您获取结果。

$(document).ready(function(){
$(".list > .item").each(function() {
var tag = $(this).children('#image');
if(tag.length)
{
    if(tag.html().length===0)
{
    tag.html('Please click to here for add a image');
}

}
});
);