我正在尝试使用Jquery而不是_blank在一个新窗口中打开几个链接,这样我的html仍然有效。我的代码如下所示:
$(document).ready(function() {
$('a[id="external-url"]').click(function(){
$(this).attr('target','_blank');
});
});除了当链接包含在我使用Jquery load()方法放在页面上的html中之外,这种方法工作得很好。有没有人能解释一下原因,请帮我找出解决方案?
发布于 2010-04-09 17:33:47
更新:如果你在HTML5+ the target attribute is no longer deprecated (no longer missing, to be more accurate)中以it was in XHTML 1.0 (原始问题上下文)的形式阅读这篇文章。我建议如果你现在正在阅读这篇文章,忽略下面所有的东西,不管它是否抛出合规警告,都使用 target 属性,所有的浏览器都支持它,它永远不应该被留下out...the事实表明在后来的规范中删除它是一个错误。
这将会起作用:
$('a#external-url').live('click', function(){
$(this).attr('target','_blank');
});但是,if应该是唯一的,如果您加载的数量超过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;
});发布于 2010-04-09 17:32:31
$(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/
发布于 2010-04-09 17:30:39
使用
$('a[id="external-url"]').live("click", function(){
$(this).attr('target','_blank');
});您的代码将click事件绑定到页面加载时可用的元素,而不是动态创建的元素。Live将把事件绑定到动态创建的元素上。
https://stackoverflow.com/questions/2606282
复制相似问题