我有一些包含youtube链接的字符串(字符串中的长度和位置不同,并非每个字符串都包含URL)和文本。这些字符串将被写入段落标签,但我希望URL可以点击,所以我需要在URL周围使用锚标签。
我设法找到一种方法来访问包含链接的段落:
if($("#facebookFeed p:contains('http')").length){
//do stuff
}
我被困在这里,不确定这是不是正确的做法。
答案 0 :(得分:3)
您必须使用正则表达式来匹配字符串中的URL,然后将它们包装在锚点中:
$('p:contains("http://")').html(function(index, html) {
var url = html.match(/(((ftp|https?):\/\/)[\-\w@:%_\+.~#?,&\/\/=]+)|((mailto:)?[_.\w-]+@([\w][\w\-]+\.)+[a-zA-Z]{2,3})/g);
$.each(url, function(i, v) {
html = html.replace(v, '<a href="' + v + '">' + v + '</a>');
});
return html;
});
以上示例使用this answer
中的正则表达式模式答案 1 :(得分:1)
以下将做
$("#facebookFeed p:contains('http')").each(function() {
$(this).wrapInner('<a href="' + $(this).text() + '"/>');
});
如此处所示:http://jsfiddle.net/uyHQ2/
当然,这假设某种HTML布局。 如果您的不同,请发布HTML示例。