4

我有以下代码将添加target="_blank"到所有链接:

$(function() {
    $("a[href^='http://']").attr("target","_blank");
});

我将如何重写上述代码以针对除内部链接之外的所有链接。

IE:

http://www.my-site.com/= 内部链接

http://www.other-site.com/= 外部链接

另外,我将如何定位任何不是以开头http://但不是内部的链接?

我正在寻找一个 jQuery 解决方案。

4

2 回答 2

6

只需链接您的选择器:

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

这将选择所有以http(因此不是相对内部)但不是以http://www.mysite.com(因此也不是绝对内部)开头的链接。

于 2013-06-12T00:38:38.597 回答
4

在使用 jQuery 时,我使用以下 JavaScript。它还向外部链接添加了一个类,并包括在 Google Analytics 中跟踪传出链接。如果您不使用 Google Analytics,只需将其删除。

如果您不希望它点击页面上的所有链接,您可以使用更具体的选择器,例如$("#main a[href^=http]").

$("a[href^=http]")
  .each(function(){
    // this part checks if the link is external
    if (this.href.indexOf(location.hostname) == -1){
      // add a class for external links
      $(this).addClass("ext")
        // make the link open in a new tab/window
        .attr({ "target":"_blank", "rel":"external" })
        // track clicks of external links if you use Google Analytics
        .click(function(){
          _gaq.push(["_trackEvent", "Outgoing link", "click", $(this).attr("href")]);
        });
    }
  });
于 2013-06-12T00:36:34.153 回答