1

我的 html 中有以下代码

<p>6565655655|cell</p>

我想删除这条垂直线并将单词“cell”包裹到圆括号中。所以我想要像下面这样的输出

<p>6565655655 (cell)</p>

当通过ajax调用动态加载p标签的内容时,我如何使用jquery来做到这一点。

4

5 回答 5

1

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

这里有一个例子:

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

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

于 2013-01-02T00:36:54.367 回答
0

几种方法可以做到:

var text = '6565655655|cell';

方法一:

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

方法二:

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

方法三:

$('p').text(text.replace(/([0-9]+)\|(.*)/, '$1 ($2)'));
于 2013-01-02T00:41:43.000 回答
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/

于 2013-01-02T00:43:07.103 回答
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);
};
于 2013-01-02T00:43:43.377 回答
0

如果您将类名添加到段落标签,那么您还可以使用以下...

html部分 -

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

jQuery部分

$(document).ready(function() {
var aText = ($('.item').html()).split('|');
$('.item').html(aText[0] + "&nbsp;&#40;" + aText[1] + "&#41;");
});
于 2013-01-02T00:54:50.667 回答