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

使用Jquery在新窗口中打开链接,jquery,load,Jquery,Load,我正在尝试使用Jquery而不是blank在新窗口中打开一些链接,这样我的html仍然有效。我的代码如下所示: $(document).ready(function() { $('a[id="external-url"]').click(function(){ $(this).attr('target','_blank'); }); }); <a href="http://google.com" class="exteral-url">Google&

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

$(document).ready(function() {
    $('a[id="external-url"]').click(function(){
        $(this).attr('target','_blank');
    });
});
<a href="http://google.com" class="exteral-url">Google</a>
$('a.external-url').live('click', function(){
  $(this).attr('target','_blank');
});
除了我使用Jquery load()方法在页面上放置的html中包含链接外,这一切都很好。有人能解释原因并提供解决方案吗?

使用

$('a[id="external-url"]').live("click", function(){
        $(this).attr('target','_blank');
    });
您的代码将click事件绑定到页面加载时可用的元素,而不是动态创建的元素。Live将事件绑定到动态创建的元素

$(function(){
    $('a[id="external-url"]').click(function(){
        window.open(this.href);
        return false;
    });
});

更新:如果您在HTML5+世界()中阅读此内容(原始问题上下文)。我建议,如果您现在正在阅读此文章,请忽略下面的所有内容,使用
target
属性,无论它是否抛出合规性警告
,所有浏览器都支持它,而且它永远不应该被遗漏……事实上,它在以后的规范中被添加回来,表明删除它是一个错误


这将有助于:

$('a#external-url').live('click', function(){
  $(this).attr('target','_blank');
});
但是,ID应该是唯一的,如果加载的ID超过1个,则它们需要有一个类,如下所示:

$(document).ready(function() {
    $('a[id="external-url"]').click(function(){
        $(this).attr('target','_blank');
    });
});
<a href="http://google.com" class="exteral-url">Google</a>
$('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;
});

与其他人所认为的相反,根据HTML5规范,
target
属性及其所有值都没有被弃用

你可以在这里阅读:

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


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

-1\u blank已经被弃用了!即使您正在通过使用脚本添加属性来解决验证问题。@James-我正在解决OP无法绑定单击的问题。如果他们想绕过验证,这是他们的要求,而不是我的要求,问题是javascript无法工作。顺便说一句,通常我都会同意,但W3C方面完全不赞成使用
\u blank
,这是一个有点迟钝的错误。我跟你赌100美元,5年后每个浏览器都会支持
\u blank
。我不得不承认,当我自己发现这一点时,我有点惊讶,但我们现在不能选择忽略哪些标准,我们可以。。。试图推翻投票结果,但太老了sigh@James-编辑,添加了符合标准的方式,这是一个非常有效的观点:)这个答案是错误的,除非你使用类似XHTML 1.1/2的东西,请参见下面我的答案。太棒了!看起来W3C意识到了他们的错误:这并不完全准确(关于这个问题的原始上下文)。它在XHTML中被弃用了(丢失了,但你会听到它被弃用了),后来又被添加到XHTML中(我完全同意,它本来就不应该被弃用)。是的,它被弃用了,但到目前为止,在HTML5中,它是被允许的。