我想使用jQuery查找特定字符,在这种情况下,在一个或多个段落中使用“#”,删除该字符,然后在span标记中包装所有内容。
这是HTML示例:
<p>Lorem ipsum dolor sit amet # consectetur adipiscing elit<p>
jQuery应该将上面的代码转换成这个:
<p>Lorem ipsum dolor sit amet <span>consectetur adipiscing elit</span></p>
我已经花了几个小时就已经知道了,我知道解决方案应该相对简单,但我找不到它。有没有jQuery大师愿意帮忙?谢谢!
答案 0 :(得分:4)
以下是 working jsFiddle demo :
<强> HTML:强>
<p>Lorem ipsum dolor sit amet # consectetur adipiscing elit</p>
<强> jQuery的:强>
$("p:contains('#')").each(function() {
var $this = $(this),
splitText = $this.text().split("#"),
formattedText = splitText[0] + "<span>" + splitText[1] + "</span>";
$this.html(formattedText);
});
- 如果您想要多次出现嵌套跨度: -
使用此 working jsFiddle demo :
<强> HTML:强>
<p>Lorem ip#sum dolor sit amet # consectetur adip#iscing elit</p>
<强> jQuery的:强>
$("p:contains('#')").each(function() {
var $this = $(this),
thisText = $this.text(),
numberOfOccurrences = thisText.split("#").length,
formattedText = thisText.replace(/\#/g, "<span>");
for (var i = 1; i < numberOfOccurrences; i++) { formattedText += "</span>"; }
$this.html(formattedText);
});
更新备注:
答案 1 :(得分:2)
像这样的东西
$("p:contains('#')").each(function () {
var $this = $(this);
var thisText = $(this).text().split("#");
$this.html(thisText[0] + "<span>" + thisText[1] + "</span>";
});
答案 2 :(得分:1)
这应该有效:
$("p").each(function(){
var text = $(this).text().split("|");
$(this).html("");
var final = text[0] + "<span>" + text[1] + "</span>"; $(this).html(final);
});
答案 3 :(得分:1)
Here's an example of the following →
$('p').each(function(i,elem){
var $this = $(this),
tStr = $this.text(),
res = tStr.replace(/(^.*)(\#.*$)/, '$1<span>$2</span>').replace('#','');
$this.html(res);
});