我正在使用 jQuery 和一个非常简单的脚本来用它们的“智能”对应物替换引号、撇号和双破折号:
function smarten(a) {
a = a.replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018"); // opening singles
a = a.replace(/'/g, "\u2019"); // closing singles & apostrophes
a = a.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201c"); // opening doubles
a = a.replace(/"/g, "\u201d"); // closing doubles
a = a.replace(/--/g, "\u2014"); // em-dashes
return a
};
我将其用作TwitterJS的回调,它解析链接并生成如下块:
<ul> <li>Here's a link! <a href="http://www.foobar.com">http://www.foobar.com</a></li> </ul>
问题是,如果我这样做:
$('#tweet li').html(smarten($('#tweet li').html()))
它破坏了链接,如果我这样做:
$('#tweet li').html(smarten($('#tweet li').text()))
它完全丢弃它们。有没有一种聪明、健壮的方法来只抓取文本(<a>
如有必要,也可以从标签中取出),“smarten”,然后将其放回去,而不干扰 TwitterJS 的链接解析?