我需要在导入的字符串中将href包装在匹配的url周围 - 但是在某些情况下,url已经设置了href属性,因此它们不需要包装。我在这个早期阶段的代码如下
if(jQuery('.single-ai1ec_event')) {
var httpSelector = '.single-ai1ec_event .entry-content, .single-ai1ec_event .p-location';
var searchText = jQuery(httpSelector).text();
var expression = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
var urls = searchText.match(expression);
var wrappedUrl;
if (urls) {
for (var i = 0, il = urls.length; i < il; i++) {
jQuery(httpSelector).html(function () {
wrappedUrl = wrap(urls[i]);
jQuery(this).html(jQuery(this).html().replace(urls[i], wrappedUrl));
});
}
}
}
function wrap(str) {
return '<a href="' + str + '" target="_blank">' + str + '<\/a>';
}
我目前正在寻找一种方法来排除那些设置了href属性但没有太大成功的包装网址。
答案 0 :(得分:1)
您可以更改选择器以排除没有href标签的锚点,如下所示:
:not([href])
然后您的选择器变为:
var httpSelector = 'a:not([href]).single-ai1ec_event ...';