我正在尝试使用Jquery而不是_blank在新窗口中打开一些链接,因此我的html仍然有效。我的代码如下所示:
$(document).ready(function() {
$('a[id="external-url"]').click(function(){
$(this).attr('target','_blank');
});
});
这很好用,除非链接包含在我使用Jquery load()方法放在页面上的html中。任何人都可以解释原因并请求解决方案吗?
答案 0 :(得分:15)
更新:如果您在HTML5 +世界the target
attribute is no longer deprecated(no 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中使用它。