jQuery从元素中删除特定文本

26

我想从我的网站元素中删除文本“By:”,但我希望其余的文本保留下来。我该如何使用jQuery实现?谢谢。

HTML代码:


<div id="text">By: Anonymous From Minnesota</div>

我希望它只是这样:

<div id="text">Anonymous From Minnesota</div>

移除哪个元素的哪个属性?比如...文本输入字段的当前值?还是 div 或 p 元素中的任意文本? - codercake
@themerlinproject 已添加 HTML。 - henryaaron
@codercake 只需要 divp 标签内的文本。 - henryaaron
4个回答

38

如果你想找到所有带有“By:”的元素并将其删除,可以尝试这样做:

$(':contains("By:")').each(function(){
    $(this).html($(this).html().split("By:").join(""));
});

这将从所有元素中移除任何 "By:" 的出现。如果你想针对特定类型的元素,请更改 $(':contains("By:")') 以包括适合您的任何选择器。


1
这似乎是我要找的,但出现了一个随机添加逗号的问题:http://jsfiddle.net/xSphc/ - henryaaron
1
哈!我忘记在join()中添加分隔符参数了。我已经用join("")更新了答案。基本上它所做的是使用“By:”作为分隔符将字符串拆分成数组,然后使用空作为分隔符将数组元素重新组合成字符串。希望这有所帮助 :) - Andrew Odri
1
如果您对基本的.split().join()和.replace(//g, "")的性能感兴趣,您可能会发现这个链接很有趣:http://jsperf.com/split-join-vs-regex-replace - Andrew Odri
很不幸的是,当我将代码修改为以下形式时:$('table#ReviewBox tbody tr td table tbody tr td i:contains("By:")').each(function(){ $(this).html($(this).html().split("By:").join("")); });它只删除了第一个实例中的“By:”,有没有办法解决这个问题? - henryaaron
啊,你有多个具有相同值的id属性... jQuery(和HTML规范)仅能处理一个唯一的id属性。如果将其更改为类,则会按预期工作:http://jsfiddle.net/qykxJ/ - Andrew Odri
显示剩余3条评论

16
使用正则表达式来实现更全局化的解决方案。即使您的字符串结构发生变化,也可以替换By:

var str = $('div').text().replace(/By:/g, '');
$('div').text(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="text">By: Anonymous From Minnesota</div>


4

var str = $("#text").text();
$("#text").text(str.substring(3));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="text">By: Anonymous From Minnesota</div>

使用JavaScript的substring方法并为您的div指定ID以便轻松访问:
html:
<div id="text">By: Anonymous From Minnesota</div>

jquery:

var str = $("#text").text();
$("#text").text(str.substring(3));

您也可以只用一行代码实现它:
$("#text").text($("#text").text().substring(3));

1
给 div 元素一个唯一的 id,例如:t。
$('#div_id').html($('#div_id').html().substring(3));

代码演示:http://jsfiddle.net/ChUB4/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接