想使用jQuery:
.
,
;
:
'
"
“
”
{ {1}} ‘
等)直接在任何链接之前和之后发生,然后’
s。因此:
span
成为这个:
<div id="mydiv">
Lorem ipsum
<a href="#">dolor sit amet</a>,
consectetur
“<a href="#">adipisicing elit</a>”.
</div>
(顺便说一句,<div id="mydiv">
Lorem ipsum
<a href="#">dolor sit amet</a><span>,</span>
consectetur
<span>“</span><a href="#">adipisicing elit</a><span>”.</span>
</div>
和&ldquo
是引号。)
”
中的内容不固定。可能还存在与链接相邻的多个标点符号的情况(如上所述,div
成为”.
)
非常感谢任何帮助!
对这个问题进行类似(但不完全)的排序? Using jQuery, how to modify text outside of tags?
答案 0 :(得分:2)
这似乎有效:
试一试: http://jsfiddle.net/GutKg/1/
var $div = $('#mydiv');
var html = $div.html();
html = html.replace(/([^\s\w]+)<a/g, '<span>$1</span><a')
.replace(/<\/a>([^\s\w]+)/g, '</a><span>$1</span>');
$div.html( html );
编辑:已更新,以排除标记旁边的字母数字字符。
答案 1 :(得分:0)
稍微扩展一下我的问题:如果不是带有ID的单独的div
,那么整个页面中有div
的许多实例(比如类mydiv
)?< / p>
<div class="mydiv">
Lorem ipsum
<a href="#">dolor sit amet</a>,
consectetur
“<a href="#">adipisicing elit</a>”.
</div>
<div class="mydiv">
Ei vel <a href="#">velit mollis vivendo</a>.
</div>
在帕特里克的solution上拼凑出一些东西:
$('.mydiv').each(function () {
html = $(this).html().replace(/([^\s\w]+)<a/g, '<span>$1</span><a')
.replace(/<\/a>([^\s\w]+)/g, '</a><span>$1</span>');
$(this).html( html );
});
它有效 - http://jsfiddle.net/ZEC3X/ - 但我不知道,这是最有效/合乎逻辑的做法吗?