10

JSONを介して動的にページに配置されるリンクがいくつかあり、それらを直接編集する方法がありません。すべてのリンクを新しいタブで開くように強制したい、alatarget="_blank"

これでうまくいくと思いましたが、残念ながらそうではありません。何か案は?

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

動的コードを使用したjsFiddleは次のとおりです。http: //jsfiddle.net/danielredwood/mrgta/7/

4

5 に答える 5

13

これを行うことができます(これにより、ユーザーのブラウザが新しいウィンドウまたはタブを開くかどうかを決定できます)

$('a').live('click', function() {
    window.open($(this).attr('href'));
    return false;
});
于 2011-06-09T02:14:01.533 に答える
6

あなたの問題はタイミングの1つかもしれません。

のようなものを呼び出すときは、ページ上の既存のすべての要素に対して即座$('a').attr(...whatever...)に有効になることに注意してください。したがって、プラグインが非同期で実行に0ミリ秒以上かかる場合、コードはページにまだ存在していないリンクの属性を変更しようとしているように見えます。tweet

つまり、(A)tweetプラグインを呼び出し、(B)ページ上のすべてのリンクを変更してから、(C)ツイートプラグインが完了し、以前に見逃したページに一連の新しいリンクを挿入している可能性があります。

したがって、試してみることができるのは、tweet使用しているプラ​​グインに何らかの「すべて完了」またはその他の完了コールバックがあるかどうかを確認することです。これを使用して、リンクタグを変更できます。または、私も支持している別の回答のように、リンクタグを変更しようとするだけでなく、ページ上のリンククリックを(ライブで)リッスンし、その時点でインターセプトすることです。liveこのように、いつでも機能するイベント委任()を使用できるため、ツイートプラグインのタイミング/完了について心配する必要はありません。これを行う方法の優れた例については、Petahからの回答を参照してください。

幸運を!

于 2011-06-09T02:37:43.090 に答える
3

これは私のために働きます:

<!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>
于 2011-06-09T02:16:31.603 に答える
2

試す:

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

また、空白の代わりに「_new」を試してください。それでもうまくいかない場合は、生成されたhtmlまたはjavascriptコード全体を投稿してみませんか?

于 2011-06-09T02:17:28.077 に答える
1

が起動された<a>ときにまだページの一部ではないため、機能していません。$('a').attr("target","_blank");

于 2011-06-09T02:28:22.293 に答える