jQuery外部链接新窗口,将相对和相同的域链接作为内部链接

jQuery外部链接新窗口,将相对和相同的域链接作为内部链接,jquery,jquery-selectors,conditional,Jquery,Jquery Selectors,Conditional,我想在外部窗口中打开我所有非xxx.domain.com和非/相对链接的链接。这段代码显示了这个问题,它是错误的,因为第一个条件选择器立即被第二个条件选择器覆盖。因此,我要寻找的是多个条件选择器,以及如何将这两个测试结合起来,我的尝试没有成功: 试试1 $("#links a:not([href^='/']), #links a:not([href*='.domain.com/'])").live('click',function(e){ $(this).attr("target", "_bla

我想在外部窗口中打开我所有非xxx.domain.com和非/相对链接的链接。这段代码显示了这个问题,它是错误的,因为第一个条件选择器立即被第二个条件选择器覆盖。因此,我要寻找的是多个条件选择器,以及如何将这两个测试结合起来,我的尝试没有成功:

试试1

$("#links a:not([href^='/']), #links a:not([href*='.domain.com/'])").live('click',function(e){
$(this).attr("target", "_blank");
});
试试2

试试3

试试4我真的对这个有希望

$("#link a:not([href^='/'])").live('click',function(e){
  $(this).attr("target", "_blank");
  $("#links a:is([href*='.domain.com/'])").removeAttr("target");
});


<div id="link"><a href="/relative-path.html">relative</a></div>
<div id="link"><a href="http://www.google.com/">offsite</a></div>
<div id="link"><a href="http://many.domain.com/">onsite</a></div>
<div id="link"><a href="http://any.domain.com/">onsite 2</a></div>
<div id="link"><a href="http://domain.com/">onsite 3</a></div>
谢谢你的阅读

$(document.links).each( function(){
    this.target = ~this.href.indexOf( "domain.com/") ? "" : "_blank";
});

href属性自动包含扩展的url。

是的。非常有趣。我尝试此操作时没有运气,也没有警报:$document.links.each函数{alertlink check;this.target=~this.href.indexOf jshell.net/?:_blank;};也许其他一些js正在干扰document.links。你能推荐一种不依赖dom集合而依赖选择器的方法吗?因为我只希望我页面上的一小部分链接受到影响,而不是整个页面。我取出了所有其他javascript,但仍然没有效果,有没有办法使用选择器而不是dom集合?@HansOg你使用什么并不重要,每个方法仍然以相同的方式工作。只要确保你通过锚元素。如果在DOM准备就绪后调用document.links,则可以正常工作。如果警报没有发出警报,那么传递给jQuery的内容都是空的。如果集合为空,则每个人都不会进行任何调用。很可能是因为文档未准备好。
$("#link a:not([href^='/'])").live('click',function(e){
  $(this).attr("target", "_blank");
  $("#links a:is([href*='.domain.com/'])").removeAttr("target");
});


<div id="link"><a href="/relative-path.html">relative</a></div>
<div id="link"><a href="http://www.google.com/">offsite</a></div>
<div id="link"><a href="http://many.domain.com/">onsite</a></div>
<div id="link"><a href="http://any.domain.com/">onsite 2</a></div>
<div id="link"><a href="http://domain.com/">onsite 3</a></div>
$(document.links).each( function(){
    this.target = ~this.href.indexOf( "domain.com/") ? "" : "_blank";
});