使用Jquery在新窗口中打开链接

时间:2010-04-09 09:29:25

标签: jquery load

我正在尝试使用Jquery而不是_blank在新窗口中打开一些链接,因此我的html仍然有效。我的代码如下所示:

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

这很好用,除非链接包含在我使用Jquery load()方法放在页面上的html中。任何人都可以解释原因并请求解决方案吗?

4 个答案:

答案 0 :(得分:15)

更新:如果您在HTML5 +世界the target attribute is no longer deprecatedno longer missing, to be more accurate)中以it was in XHTML 1.0(原始问题背景)阅读此内容。我建议如果您现在正在阅读此内容,忽略下面的所有内容,使用target属性是否抛出合规性警告,所有浏览器都支持它它永远不应该被遗漏......事实上它在后来的规范中被添加回去表明删除它是一个错误。


这将有效:

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

但是,ID应该是唯一的,如果你加载的数量超过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;
});

答案 1 :(得分:4)

$(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/

答案 2 :(得分:1)

使用 .live()

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

您的代码会将click事件绑定到页面加载时可用的元素,而不是动态创建的元素。 Live会将事件绑定到动态创建的元素。

答案 3 :(得分:1)

相反,其他人认为,根据HTML5规范,target及其所有值的属性已弃用。

您可以在此处阅读:http://dev.w3.org/html5/markup/a.html

  

a元素的target属性在之前的版本中已弃用   HTML版本,但不再弃用,因为它在Web中很有用   应用程序,尤其是与iframe元素结合使用。

所以,请随意在HTML5中使用它。