jquery - 如何知道每个函数中特定 div id 的 div 内容是否为空?
问题描述
我需要检查每个函数中特定的 div id 内容是否为空。如果 div 内容是空的,我想放一条“请点击此处添加图片”的短信。但是我的代码没有用。
我有一个这样的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/
解决方案
您的代码中有多个问题
- 使用重复的 id,它在上下文中应该是唯一的,在这种情况下只有第一个被选中。始终
class
用于对多个元素进行分组。 - 即使它是空的,您也可以通过选择 all(
$(".item #image").html(..)
) 元素来更新所有元素(即使它不会在您当前的代码中选择)。
为了使其工作,使用类对元素进行分组,然后使用:empty
伪类选择器来获取空元素。实际上,在您的情况下不需要使用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,则使用属性等于选择器而不是id 选择器并执行相同操作。
$(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>
推荐阅读
- selenium - 在带有 Dameware 和 IE11 的 Windows 10 上运行的 Selenium 找不到任何元素
- azure-active-directory - 从组织内的用户获取 officeLocation
- go - 将结构放入切片时出现golang错误
- java - 无法将名称“X”解析为(n)“类型定义”组件
- dart - 如何使用 testBuilder 测试 source_gen 注释构建器?
- html - 即使调整窗口大小,如何使 div 以关键帧动画为中心
- java - java.util.Random 真的那么随机吗?我怎样才能生成52!(阶乘)可能的序列?
- vbscript - 不同的随机值
- java - Java lamba 参数类型未正确推断
- excel - 在 Excel 2007 中增加文本字符串中的最后一个数字