使用jQuery在新标签页中打开所有链接

i5desfxk  于 2023-08-04  发布在  jQuery
关注(0)|答案(5)|浏览(129)

我有一些链接是通过JSON动态放置在我的页面上的,没有办法直接编辑它们。我想强制所有链接在新标签中打开,ala target="_blank"
以为这会有用。可惜不是有什么想法吗

$('a').attr("target","_blank");

字符串
下面是一个jsFiddle的动态代码:http://jsfiddle.net/danielredwood/mrgta/7/

g0czyy6m

g0czyy6m1#

你可以这样做(让用户的浏览器决定是否打开一个新窗口或标签)

$('a').live('click', function() {
  window.open($(this).attr('href'));
  return false;
});

字符串
对于jQuery 1.7+:

$(document).on('click', 'a', function() {
  window.open($(this).attr('href'));
  return false;
});

vxbzzdmp

vxbzzdmp2#

你的问题可能是时机问题。
请记住,当您调用类似$('a').attr(...whatever...)的东西时,它将立即对页面上的任何和所有 * 现有 * 元素生效。所以,如果你的tweet插件是异步的,并且执行时间超过0毫秒,那么看起来你的代码正在尝试更改链接上的属性,而这些链接甚至还不存在于页面上。
也就是说,你可能(A)调用tweet插件,(B)更改页面上的所有链接,然后(C)推文插件完成并在页面上注入一堆之前错过的新链接。
因此,您可以尝试查看您正在使用的tweet插件是否具有某种“all-done”或其他完成回调,然后您可以使用这些回调来更改链接标记。或者,就像另一个建议的答案一样,我也赞同,不仅仅是尝试和改变链接标签,而是在页面上的任何链接点击时监听(实时),并及时拦截它们。这样,你就不需要担心tweet插件的时间/完成,因为你可以使用事件委托(live),它可以在任何时间点工作。请参阅Petah的答案,了解如何做到这一点。
祝你好运!

ubof19bj

ubof19bj3#

这对我很有效:

<!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>

字符串

7d7tgy0s

7d7tgy0s4#

试试看:

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

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

xkrw2x1b

xkrw2x1b5#

它不工作是因为当$('a').attr("target","_blank");被触发时,<a>还不是页面的一部分。

相关问题