Jquery用一个类替换所有DIV内部空格的点

时间:2012-01-06 09:35:35

标签: javascript jquery html replace

我正在使用最新的Jquery和以下脚本:

<script type="text/javascript">
$(document).ready(function(){
var el = $('.title');
el.html(el.html().replace(/\./gi, " "));
});
</script>

这是div:

<div class="title">The.quick.brown.fox</div>

它的作用是用DIV中的空格替换所有带有“标题”类的空格点,这对于这项工作来说真的很好。

但是我有很多DIV,它们具有相同的“标题”类,其中包含不同的字符串,我需要它们全部用空格替换点。但是这里出现的问题就是所有我得到的是所有这些DIV上的相同结果字符串“快速棕色狐狸”,而所有结果字符串应该是不同的,因为所有源字符串都不同......

如何在所有DIV中使用类“title”和每个DIV中的所有不同字符串替换点?

由于

3 个答案:

答案 0 :(得分:5)

您可以使用each()迭代匹配的元素,或将函数传递给html()并在那里计算新文本:

$(document).ready(function() {
    $(".title").html(function(index, currentHtml) {
        return currentHtml.replace(/\./gi, " ");
    });
});

答案 1 :(得分:2)

只需使用jQuery each方法迭代类.title的所有元素:

$(document).ready(function(){
  $('.title').each(function(){
    $(this).html($(this).html().replace(/\./gi, " "));
  });
});

答案 2 :(得分:1)

只要您的div中只有文本,建议的功能就可以正常工作。但是,要允许任意html(如The.quick.brown <img src='fox.jpg'>),代码应该更准确。

$('.title').each(function() {
    if (this.nodeType == 3)
        this.nodeValue = this.nodeValue.replace(/\./g, " ");
    else
        $(this).contents().each(arguments.callee);
});

基本上,您递归迭代节点的所有后代并仅替换类型为3(= text)的节点。

小提琴:http://jsfiddle.net/jZgUY/