如何在jQuery中添加条件:当div含指定文本时替换span内文本
条件替换指定元素文本的解决方案
你现在的代码会直接替换.visibleonsearch元素内所有的"No"文本,但没加上「包含指定文本」的判断条件,而且直接操作整个元素的文本还可能破坏原有的HTML结构(比如把包裹"No"的span标签给冲掉)。咱们调整下逻辑,就能精准实现需求:
核心实现思路
- 遍历所有
.visibleonsearch元素,逐个检查条件 - 判断当前元素的文本内容是否包含
I am now visible - 只有满足条件时,才修改该元素内部
.redbadgespan的文本
修改后的完整代码
<div class="visibleonsearch"> <span class="redbadge">No</span> I am now visible. </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script> jQuery(document).ready(function () { // 遍历每个目标div元素 $(".visibleonsearch").each(function() { var $currentDiv = $(this); // 去除首尾空格后判断是否包含指定文本,避免空格干扰判断 var hasTargetText = $currentDiv.text().trim().indexOf("I am now visible") !== -1; if (hasTargetText) { // 精准定位内部的redbadge span,替换文本 $currentDiv.find(".redbadge").text("Yes"); } }); }); </script>
为什么这么改更合理?
- 用
.each()遍历元素,确保每个div都能单独判断条件 - 用
.find(".redbadge")精准修改目标span,不会影响其他文本内容 - 用
indexOf判断文本存在性,完美兼容你使用的jQuery 1.7版本 - 加上
.trim()是为了避免元素首尾的空格干扰判断逻辑
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

