Javascript jQuery出站链接匿名化+;法律公告
我如何让jQuery(最好)脚本遍历每个Javascript jQuery出站链接匿名化+;法律公告,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我如何让jQuery(最好)脚本遍历每个标记并找到任何不以 http://www.example.com/ 并将src属性更改为 http://www.example.com/outbound/?verifyAge=0&dest='+encodeURIComponent(original_src) 并同时应用rel=“external”target=“\u blank” 这是一个概念的快速证明: HTML: 本质上,JavaScript所做的是找到一个元素,该元素不是以http开
标记并找到任何不以
http://www.example.com/
并将src属性更改为
http://www.example.com/outbound/?verifyAge=0&dest='+encodeURIComponent(original_src)
并同时应用rel=“external”target=“\u blank”
这是一个概念的快速证明:
HTML:
本质上,JavaScript所做的是找到一个
元素,该元素不是以http
开头的(您需要根据自己的需要,以及处理任何必须避开URL中的斜杠或诸如此类的问题),获取对它的引用作为jQuery对象(我不记得这个
是否已经是jQuery对象了,如果是的话,你可以省略这个部分),修改它的href
属性并添加一个目标
属性。我想类似的方法会奏效
$('a')
.filter( function() { return $(this).attr('href').indexOf('www.example.com') !== 0; })
.each( function(i, el) {
var curHref = el.attr('href');
el.attr('rel', 'external');
el.attr('target', '_blank');
el.attr('href', 'http://www.example.com/outbound/verifyAge=0&dest='+encodeURIComponent(curHref));
});
有一个插件可以对元素进行正则表达式匹配,但是使用正则表达式对我来说似乎有些过分了。您尝试过任何方法吗?对于初学者,您的jQuery选择器应该是
'a'
。所以您可以从以下内容开始:$('a')。每个(函数(){…})
在该函数中,您可以修改此
上的属性(将有条件地修改href
属性,添加新属性,等等)。我尝试了“a”,但似乎……效率很低……想知道是否有“更好”的方法,如!'a[href]=http://www.example.com]“
或类似于这样的愚蠢行为,我确信它是无效的,它实际上非常接近您想要的。查找属性不等于值选择器。非常感谢,我以前使用过jQ,但还没有真正深入到将不同的东西链接在一起的整个过程中。Thanks@jmoon:当然,您会希望将其包装在$(document).ready()
或使用.on()
等确保选择器在元素加载到DOM之前不会遗漏元素。是的,将被包装在一个ready中。对于任何从google结果或其他内容/为了完整性而偶然发现这一点的人,href=^=“http:\/\/www.example.com”
用于转义斜杠
$('a').not('[href^="http"]').each(function () {
var element = $(this);
element.attr('href', element.attr('href') + '?foo=baz');
element.attr('target', '_blank');
});
$('a')
.filter( function() { return $(this).attr('href').indexOf('www.example.com') !== 0; })
.each( function(i, el) {
var curHref = el.attr('href');
el.attr('rel', 'external');
el.attr('target', '_blank');
el.attr('href', 'http://www.example.com/outbound/verifyAge=0&dest='+encodeURIComponent(curHref));
});