Нет лучшего способа, хотя вы можете немного упростить его, например:
jQuery('#posts .post').each( function () {
jQuery(this).html(function(i, html) {
return html.replace(/(http?:\/\/?\S+)/g, "<a href='$1'>$1</a>");
});
});
Используйте этот подход только , если вы уверены, что сообщения уже не содержат HTML, в противном случае используйте то, что у вас есть.
jQuery работает с узлами DOM, а не с текстом внутри узлов, или, скорее, так как это всего лишь JavaScript ... но он не предоставляет много дополнительных функций для этого. jQuery, включая .wrap()
, фокусируется на манипулировании DOM, а не на тексте.