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

我试图在一个新窗口中使用Jquery而不是_blank打开一些链接,所以我的HTML仍然有效。 我的代码如下所示:

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

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

更新:如果您在HTML5 +世界中阅读此内容, 则不再使用target属性 ( 不再缺少,更准确 ),就像在XHTML 1.0 (原始问题上下文)中一样。 我建议如果你现在正在读这个, 忽略下面的所有内容使用target属性是否抛出合规性警告 ,所有浏览器都支持它,它永远不应该被遗漏……事实上它被添加回来了后来的规格显示删除它是一个错误。


这将有效:

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

但是,ID应该是唯一的,如果您加载的数量超过1,则需要使用类,如下所示:

 Google 

和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会将事件绑定到动态创建的元素。

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

你可以在这里阅读: http : //dev.w3.org/html5/markup/a.html

a元素的目标属性在以前版本的HTML中已弃用,但不再被弃用,因为它在Web应用程序中很有用,特别是与iframe元素结合使用时。

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