我知道$("a[href='http://testtesttest.org/']").attr("target", "_blank");
会找到并更改与测试网址匹配的所有链接,但我想知道如何只更改与该网址不匹配的链接。基本上将用户带到其他网站的链接 - 外部链接
答案 0 :(得分:4)
您可以使用:not
:
$("a:not([href='http://testtesttest.org/'])")
如果您想使用此网址选择所有不开始的内容,则必须使用attribute starts with selector ^=
:
$("a:not([href^='http://testtesttest.org/'])")
你提到:
基本上将用户带到其他网站的链接 - 外部链接
这取决于内部URL结构的一致性。例如。之前显示的选择器也会选择
等链接<a href="/images">Images</a>
或
<a href="foo/bar">Bar</a>
显然是内部的。如果每个内部链接都以您的域名开头,那就好了。如果没有,您可以调整这些链接,具有一致的结构,或使用其他选择器:
$("a[href^='http']:not([href^='http://testtesttest.org/'])")
这将确保未选择包含绝对和相对URL的链接。
如果您还有其他协议的链接,例如file:
,则会更加复杂。
答案 1 :(得分:0)
来自jQuery选择器的文档:
答案 2 :(得分:0)
试试这个:
$("a:not([href^='http://testtesttest.org/'])")
.attr("target", "_blank");
这将为您提供所有不以您的域名开头的网址。