我有一些链接通过 JSON 动态放置在我的页面中,无法直接编辑它们。我想强制所有链接在新标签页中打开,alatarget="_blank"
认为这会工作..但遗憾的是它不是。有任何想法吗?
$('a').attr("target","_blank");
这是一个带有动态代码的 jsFiddle:http: //jsfiddle.net/danielredwood/mrgta/7/
我有一些链接通过 JSON 动态放置在我的页面中,无法直接编辑它们。我想强制所有链接在新标签页中打开,alatarget="_blank"
认为这会工作..但遗憾的是它不是。有任何想法吗?
$('a').attr("target","_blank");
这是一个带有动态代码的 jsFiddle:http: //jsfiddle.net/danielredwood/mrgta/7/
您可以这样做(让用户浏览器决定是否打开新窗口或选项卡)
$('a').live('click', function() {
window.open($(this).attr('href'));
return false;
});
您的问题可能是时间问题之一。
请记住,当您调用类似$('a').attr(...whatever...)
的内容时,它将立即对页面上的任何和所有现有元素生效。所以,...如果您的tweet
插件是异步的并且执行时间超过 0 毫秒,那么您的代码似乎正在尝试更改页面上甚至不存在的链接的属性。
也就是说,您可能 (A) 调用tweet
插件,(B) 更改页面上的所有链接,然后 (C) 推文插件完成并在页面上注入一堆之前错过的新链接。
因此,您可以尝试查看tweet
您正在使用的插件是否具有某种“全部完成”或其他完成回调,然后您可以使用它来更改链接标签。或者,就像我也赞同的另一个答案所建议的那样,不仅要尝试更改链接标签,还要在页面上的任何链接点击时收听(实时),并在那个时间点拦截它们。这样,您无需担心推文插件的时间/完成,因为您可以使用live
在任何时间点都有效的事件委托 ( )。有关如何执行此操作的一个很好的示例,请参阅 Petah 的答案。
祝你好运!
这对我有用:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<a href="http://www.google.com">test</a>
<br />
<a href="http://www.yahoo.com">test2</a>
<script>
$('a').attr('target', '_blank');
</script>
</body>
</html>
尝试:
$('a').attr({ target: "_blank" });
另外,尝试“_new”而不是空白。如果这不起作用,为什么不发布生成的 html 或整个 javascript 代码?
它不起作用,因为它在被触发<a>
时还不是您页面的一部分。$('a').attr("target","_blank");