Jquery如果不以特定的url / domain开头,则将链接更改为_blank

时间:2011-01-26 01:52:34

标签: jquery hyperlink

我知道$("a[href='http://testtesttest.org/']").attr("target", "_blank");会找到并更改与测试网址匹配的所有链接,但我想知道如何只更改与该网址不匹配的链接。基本上将用户带到其他网站的链接 - 外部链接

3 个答案:

答案 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选择器的文档:

http://api.jquery.com/not-selector/

答案 2 :(得分:0)

试试这个:

$("a:not([href^='http://testtesttest.org/'])")
    .attr("target", "_blank");

这将为您提供所有不以您的域名开头的网址。