Открыть ссылку в новом окне с помощью 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.