Открыть ссылку в новом окне с помощью jQuery

Я пытаюсь открыть несколько ссылок в новом окне, используя Jquery, а не _blank, поэтому мой html остается действительным. Мой код выглядит так:

$(document).ready(function() {
    $('a[id="external-url"]').click(function(){
        $(this).attr('target','_blank');
    });
});

это работает отлично, за исключением случаев, когда ссылка содержится в html, который я разместил на странице с помощью метода jQuery load (). Может кто-нибудь объяснить, почему и прошу помочь с решением?

4 ответов


обновление: если Вы читаете это в мире HTML5+на target атрибут больше не является устаревшим (больше не отсутствует, если быть более точным) как это было в XHTML 1.0 (исходный контекст вопроса). Я предлагаю, если Вы читаете это сейчас,игнорировать все, что ниже, использовать target атрибут, выдает ли он предупреждение о соответствии или нет все браузеры поддерживают его, и он никогда не должны были упустить...тот факт, что он был добавлен в более позднюю спецификацию, показывает, что удаление было ошибкой.


это будет работать:

$('a#external-url').live('click', function(){
  $(this).attr('target','_blank');
});

однако идентификаторы должны быть уникальными, если вы загружаете более 1, они должны иметь класс, например:

<a href="http://google.com" class="exteral-url">Google</a>

и jQuery вот так:

$('a.external-url').live('click', function(){
  $(this).attr('target','_blank');
});

путь стандартов уступчивый был бы:

$('a.external-url').live('click', function(e){
  window.open(this.href);
  e.preventDefault(); //or return false;
});

$(function(){
    $('a[id="external-url"]').click(function(){
        window.open(this.href);
        return false;
    });
});

http://snipplr.com/view/4626/jquery-snip--open-link-in-new-window/


использовать .live ()

$('a[id="external-url"]').live("click", function(){
        $(this).attr('target','_blank');
    });

ваш код свяжет событие click с элементами, доступными при загрузке страницы, а не с динамически созданными элементами. Live будет связывать события с элементами, которые также создаются динамически.


наоборот, то, что другие считают,target атрибут со всеми его значениями -не устарело согласно спецификации HTML5.

вы можете прочитать об этом здесь:http://dev.w3.org/html5/markup/a.html

целевой атрибут элемента A был устаревшим в предыдущем версия HTML, но больше не устарела, так как она полезна в Интернете применения, в частности в комбинации с iframe элемент.

итак, не стесняйтесь использовать его в HTML5.