我有一些鏈接通過JSON動態放置在我的頁面中,無法直接編輯它們。我想強制所有鏈接在新標籤中打開,ala target="_blank"
用jQuery打開新選項卡中的所有鏈接
認爲這將工作..但可悲的是,事實並非如此。有任何想法嗎?
$('a').attr("target","_blank");
這裏有一個的jsfiddle與動態代碼: http://jsfiddle.net/danielredwood/mrgta/7/
我有一些鏈接通過JSON動態放置在我的頁面中,無法直接編輯它們。我想強制所有鏈接在新標籤中打開,ala target="_blank"
用jQuery打開新選項卡中的所有鏈接
認爲這將工作..但可悲的是,事實並非如此。有任何想法嗎?
$('a').attr("target","_blank");
這裏有一個的jsfiddle與動態代碼: http://jsfiddle.net/danielredwood/mrgta/7/
你可以做到這一點(它可以讓用戶的瀏覽器決定是否打開一個新窗口或標籤)
$('a').live('click', function() {
window.open($(this).attr('href'));
return false;
});
該作品對我來說:
<!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>
如果你用'_blank'代替''new''它是否仍然適合你?只是問問。如果是這樣,也許OP有其他問題。如果沒有,我想知道爲什麼。 – Sparky 2011-06-09 02:23:16
@Dave Maple - 沒有骰子。加載了一個jsFiddle來演示。發佈在問題 – technopeasant 2011-06-09 02:24:51
@ Sparky672 - 好點也適用。 – 2011-06-09 02:27:24
嘗試:
$('a').attr({ target: "_blank" });
此外,請嘗試「_new」而不是空白。如果這不起作用,爲什麼不發佈生成的HTML或您的整個JavaScript代碼?
這不起作用,因爲當$('a').attr("target","_blank");
被觸發時,<a>
還不是您的頁面的一部分。
也只是我的想法。解? – technopeasant 2011-06-09 02:31:33
@technopeasant,我不確定。 – Sparky 2011-06-09 02:34:51
您的問題可能是時間問題之一。
請記住,當你調用類似$('a').attr(...whatever...)
,這將生效立即,在任何及所有頁面上現有元素。因此,如果您的tweet
插件是異步的,並且需要超過0毫秒的時間才能執行,則看起來您的代碼正嘗試更改甚至不存在於頁面上的鏈接上的屬性。 (A)調用tweet
插件,(B)更改頁面上的所有鏈接,然後(C)推文插件完成並在頁面上注入一堆新鏈接早。
因此,您可以嘗試一下,看看您使用的tweet
插件是否具有某種「全部完成」或其他完成回調,然後您可以使用它來更改鏈接標記。或者,像我建議的另一個答案一樣,我不僅要嘗試更改鏈接標籤,而且要在網頁上的任何鏈接點擊時監聽(實時),並在該時間點攔截它們。這樣,您就不必擔心推文插件的時間安排/完成情況,因爲您可以使用在任何時間點均可正常工作的事件代理(live
)。查看來自Petah的答案,瞭解如何做到這一點的一個很好的例子。
祝你好運!
我不知道爲什麼這是downvoted?它應該像廣告一樣工作。在附註中,我確實喜歡將'target'屬性設置爲'_blank',正如其他答案中所建議的那樣,因爲我是老派,運行良好。但是這個特殊的解決方案---如果一個人甚至關心這樣的事情---實際上就是如果關心驗證應該被推薦的解決方案(因爲'target'是一個被棄用的屬性)。 – Funka 2011-06-09 02:30:03
P.S.,請在本頁看到我的單獨答案,其中另一個原因支持相同的答案:計時。 – Funka 2011-06-09 02:38:26