Открытая ссылка в новом окне с JQuery

Я пытаюсь открыть несколько ссылок в новом окне с помощью JQuery, а не _blank, таким образом, мой HTML остается допустимым. Мой код похож на это:

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

Это работает просто великолепно кроме тех случаев, когда ссылка содержится в HTML, который я поместил на странице с помощью загрузки JQuery () метод. Кто-либо может объяснить, почему и помогите с решением?

7
задан Jonathan Leffler 8 September 2013 в 18:32
поделиться

3 ответа

Обновление: Если вы читаете это в мире 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;
});
15
ответ дан 6 December 2019 в 08:42
поделиться
$(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/

4
ответ дан 6 December 2019 в 08:42
поделиться

Используйте .live()

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

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

1
ответ дан 6 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: