jQuery查找并替换div的内容

时间:2012-12-10 08:53:47

标签: jquery replace

我正在寻找用jQuery查找和替换文本,但发现只有简单的函数将静态文本替换为其他静态文本。我想弄清楚如何用另一个div的内容替换字符串。例如:

<div class="item-one">blue</div>

<p>My color is item one</p>

我想要做的是将字符串“item one”替换为div的内容,并使用item-one类。我不只是这个字符串的一个实例,而是页面上的所有实例。我真的很感激任何帮助。感谢

4 个答案:

答案 0 :(得分:1)

您可以使用text方法:

$('p').text(function(i, current){
   var c = $('.item-one').text();
   return current.replace('item one', c);
})

http://jsfiddle.net/3eE4G/

如果您有更多元素:

$('p').text(function(i, t) {
   var w = t.split(' ')[4];
   var c = $('.item-'+w).text();
   return t.replace('item '+w, c)
})

http://jsfiddle.net/e7DRr/

答案 1 :(得分:0)

$('p').text($('p').text().replace('item one',$('.item-one').text()));

jsFiddle link

提示:

  • 如果'item-one'是唯一的,请使用ID而不是类
  • 您还应该为<p>
  • 添加唯一ID

答案 2 :(得分:0)

Trere两种方式

首先是使用.replace()函数,它可以将一些静态文本替换为div中的文本:

$("p").text($("p").text().replace("text", $("#some_text").text()));

但更好的方法是将文本想要更改为“span”标记并使用text()函数

$("p span").text($(".item-one").text());

答案 3 :(得分:0)

如果您想要完全动态,不关心div有多少个类,以及div的内容应该使用多少次。

$(document).ready(function()
{
    var replaceClasses = [];
    var currentClasses;
    var i = 0;

    // Save all classes to be used for replacement in an array
    $('div').each(function()
    {
        currentClasses = $(this).attr('class').split(/\s+/);
        for (i; i < currentClasses.length; i++)
        {
            replaceClasses.push(currentClasses[i].replace('-', ' '));
        }
        i = 0;
    });

    // Loop all classes and replace text if applicable
    for (i; i < replaceClasses.length; i++)
    {
        var pText = $('p:contains("' + replaceClasses[i] + '")').text();

        $('p:contains("' + replaceClasses[i] + '")').each(function()
        {
            $(this).text($(this).text().replace(replaceClasses[i], $('.' + replaceClasses[i].replace(' ', '-')).text()));
        });
    }  

});

http://jsfiddle.net/KzCCQ/