2012-12-10 318 views
1

我正在尋找和替換文本與jQuery,但發現只有簡單的功能,用其他靜態文本替換靜態文本。我想知道如何用另一個div的內容替換字符串。例如:jQuery查找和替換div的內容

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

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

我想要做的是用一個類的項目一替換字符串「項目一」與div的內容。我不只想要這個字符串的一個實例,但他們都在頁面上。我真的很感謝任何幫助。謝謝

回答

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

jsFiddle link

提示:

  • 如果 '項目一' 是不是類
  • 獨特的使用ID您還應該添加一個唯一的ID爲<p>
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/

+0

美麗。工作就像一個魅力:) – skramer

0

Trere兩種方式

首先是使用.replace()函數,可以取代一些靜態文本從格文本像這樣:

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

但更好的方法是採取文本你想要什麼更改爲「跨度」標籤,並使用text()函數

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

你的腳本不做任何事情,因爲文本的改變的價值沒有被保存。 – Cristy

+0

http://jsfiddle.net/BdnPJ/這裏是第二種方式 –

+0

是的,在1函數中我犯了錯誤,這裏是工作版本http://jsfiddle.net/BdnPJ/1/ –

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/