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;
});
あなたの問題はタイミングの1つかもしれません。
のようなものを呼び出すときは、ページ上の既存のすべての要素に対して即座$('a').attr(...whatever...)
に有効になることに注意してください。したがって、プラグインが非同期で実行に0ミリ秒以上かかる場合、コードはページにまだ存在していないリンクの属性を変更しようとしているように見えます。tweet
つまり、(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");