Внешние ссылки jQuery Новое окно, уважайте относительные и те же доменные ссылки как внутренние - PullRequest
2 голосов
/ 12 января 2012

Мне бы хотелось, чтобы все мои ссылки, которые не являются xxx.domain.com и не относились к / / относительным, открывались во внешнем окне.Этот код показывает проблему, которая является неправильной, поскольку первый условный селектор немедленно перезаписывается вторым.Итак, я ищу несколько условных селекторов и как объединить эти два теста, мои попытки, в которых мне не везет:

попытка 1)

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

попытка 2)

$("#links a:not([href^='/']).#links a:not([href*='.domain.com/'])

попробуй 3)

$("#links a:not([href^='/']):not([href*='.domain.com/'])"

попробуй 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>

Спасибо за чтение!

1 Ответ

5 голосов
/ 12 января 2012
$(document.links).each( function(){
    this.target = ~this.href.indexOf( "domain.com/") ? "" : "_blank";
});

Свойство href автоматически имеет расширенный URL.

...