使用jQuery打开新选项卡中的所有链接

我有一些链接通过JSON动态放置在我的页面中,无法直接编辑它们。 我想强制所有链接在新标签中打开,ala target="_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插件完成并在页面上注入一堆早先错过的新链接。

所以,你可以尝试,看看你使用的tweet插件是否有某种“全部完成”或其他完成回调,然后你可以使用它来改变链接标签。 或者,正如我建议的另一个答案所建议的那样,不仅是尝试更改链接标记,而是在页面上的任何链接点击时收听(实时),并在该时间点拦截它们。 这样,您不必担心推文插件的时间/完成,因为您可以使用在任何时间点都可以工作的事件委派( live )。 请参阅Petah的答案,了解如何执行此操作的一个很好的示例。

祝好运!

这对我有用:

       test 
test2

它不起作用,因为当$('a').attr("target","_blank");时, 还不是你页面的一部分$('a').attr("target","_blank"); 被解雇了。

尝试:

 $('a').attr({ target: "_blank" }); 

另外,尝试“_new”而不是空白。 如果这不起作用,为什么不发布生成的HTML或您的整个JavaScript代码?