我正在寻找用jQuery查找和替换文本,但发现只有简单的函数将静态文本替换为其他静态文本。我想弄清楚如何用另一个div的内容替换字符串。例如:
<div class="item-one">blue</div>
<p>My color is item one</p>
我想要做的是将字符串“item one”替换为div的内容,并使用item-one类。我不只是这个字符串的一个实例,而是页面上的所有实例。我真的很感激任何帮助。感谢
答案 0 :(得分:1)
您可以使用text
方法:
$('p').text(function(i, current){
var c = $('.item-one').text();
return current.replace('item one', c);
})
如果您有更多元素:
$('p').text(function(i, t) {
var w = t.split(' ')[4];
var c = $('.item-'+w).text();
return t.replace('item '+w, c)
})
答案 1 :(得分:0)
$('p').text($('p').text().replace('item one',$('.item-one').text()));
提示:
ID
而不是类<p>
答案 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()));
});
}
});