Я использую 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>
, если необходимо), «умнее», а затем вернуть его обратно, не мешая анализу ссылок в TwitterJS?