在页面加载时用jQuery替换文本字符串?

时间:2013-01-02 00:32:09

标签: javascript jquery

我的html中有以下代码

<p>6565655655|cell</p>

我想删除此垂直线并将单词“cell”包装成圆括号。所以我想要输出如下

<p>6565655655 (cell)</p>

当通过ajax调用动态加载p标签的内容时,如何使用jquery来完成它。

5 个答案:

答案 0 :(得分:1)

使用管道作为分隔符拆分p-tag的内容,然后重新插入如此创建的数组,第二个元素与周围的括号。

这是一个例子:

var splittedString = $("p").text().split("|");
$("p").html(splittedString[0] + " (" + splittedString[1] + ")");

jsFiddle:http://jsfiddle.net/r3c4J/

答案 1 :(得分:0)

很少有办法:

var text = '6565655655|cell';

方法1:

var parts = text.split('|');
$('p').text(parts[0] + ' (' + parts[1] + ')');

方法2:

$('p').text(text.replace('|cell', ' (cell)');

方法3:

$('p').text(text.replace(/([0-9]+)\|(.*)/, '$1 ($2)'));

答案 2 :(得分:0)

你可以这样做:

$('p').each(function () {
    var $txt = $(this).text();

    if ($txt.indexOf('|') > 0) {
        var txtArray = $txt.split('|');
        $(this).html(txtArray[0] + ' (' + txtArray[1] + ')');
    }
});

示例:http://jsfiddle.net/fewds/E637y/1/

答案 3 :(得分:0)

在你的ajax成功方法中:

success: function(data)
{
 $(data).find("p").each(function(index,element){
  var pipe = element.innerHTML.indexOf("|");
  if( pipe != -1 ){
   element.innerHTML.replace("|","( ");
   element.innerHTML += ")";
  }
 }
 //continue with placing data on the page.
}

你也可以把它变成一个函数,这样你就可以在页面第一次加载时调用它

function replacePipe(element)
{
  $(element).find("p").each(function(index,el){
  var pipe = el.innerHTML.indexOf("|");
  if( pipe != -1 ){
   el.innerHTML.replace("|","( ");
   el.innerHTML += ")";
  }
 }
}

这将使ajax成功看起来像这样:

success: function(data)
{
 replacePipe(data);
 //place data, perhaps $(tar).html(data);
}

你也可以加载

window.onload = function(){ 
 replacePipe(document.body);
};

答案 4 :(得分:0)

如果您在段落标记中添加了类名,那么您还可以使用以下内容...

html part -

<p class="item">6565655655|cell</p>

jQuery部分

$(document).ready(function() {
var aText = ($('.item').html()).split('|');
$('.item').html(aText[0] + "&nbsp;&#40;" + aText[1] + "&#41;");
});