我的 html 中有以下代码
<p>6565655655|cell</p>
我想删除这条垂直线并将单词“cell”包裹到圆括号中。所以我想要像下面这样的输出
<p>6565655655 (cell)</p>
当通过ajax调用动态加载p标签的内容时,我如何使用jquery来做到这一点。
我的 html 中有以下代码
<p>6565655655|cell</p>
我想删除这条垂直线并将单词“cell”包裹到圆括号中。所以我想要像下面这样的输出
<p>6565655655 (cell)</p>
当通过ajax调用动态加载p标签的内容时,我如何使用jquery来做到这一点。
使用管道作为分隔符拆分 p-tag 的内容,然后重新插入如此创建的数组,第二个元素带有括号。
这里有一个例子:
var splittedString = $("p").text().split("|");
$("p").html(splittedString[0] + " (" + splittedString[1] + ")");
jsFiddle:http: //jsfiddle.net/r3c4J/
几种方法可以做到:
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)'));
你可以这样做:
$('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/
在您的 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);
};
如果您将类名添加到段落标签,那么您还可以使用以下...
html部分 -
<p class="item">6565655655|cell</p>
jQuery部分
$(document).ready(function() {
var aText = ($('.item').html()).split('|');
$('.item').html(aText[0] + " (" + aText[1] + ")");
});