2011-06-09 125 views

回答

11

你可以做到這一點(它可以讓用戶的瀏覽器決定是否打開一個新窗口或標籤)

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

我不知道爲什麼這是downvoted?它應該像廣告一樣工作。在附註中,我確實喜歡將'target'屬性設置爲'_blank',正如其他答案中所建議的那樣,因爲我是老派,運行良好。但是這個特殊的解決方案---如果一個人甚至關心這樣的事情---實際上就是如果關心驗證應該被推薦的解決方案(因爲'target'是一個被棄用的屬性)。 – Funka 2011-06-09 02:30:03

+0

P.S.,請在本頁看到我的單獨答案,其中另一個原因支持相同的答案:計時。 – Funka 2011-06-09 02:38:26

2

該作品對我來說:

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

如果你用'_blank'代替''new''它是否仍然適合你?只是問問。如果是這樣,也許OP有其他問題。如果沒有,我想知道爲什麼。 – Sparky 2011-06-09 02:23:16

+0

@Dave Maple - 沒有骰子。加載了一個jsFiddle來演示。發佈在問題 – technopeasant 2011-06-09 02:24:51

+0

@ Sparky672 - 好點也適用。 – 2011-06-09 02:27:24

0

嘗試:

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

此外,請嘗試「_new」而不是空白。如果這不起作用,爲什麼不發佈生成的HTML或您的整個JavaScript代碼?

0

這不起作用,因爲當$('a').attr("target","_blank");被觸發時,<a>還不是您的頁面的一部分。

+0

也只是我的想法。解? – technopeasant 2011-06-09 02:31:33

+0

@technopeasant,我不確定。 – Sparky 2011-06-09 02:34:51

5

您的問題可能是時間問題之一。

請記住,當你調用類似$('a').attr(...whatever...),這將生效立即,在任何及所有頁面上現有元素。因此,如果您的tweet插件是異步的,並且需要超過0毫秒的時間才能執行,則看起來您的代碼正嘗試更改甚至不存在於頁面上的鏈接上的屬性。 (A)調用tweet插件,(B)更改頁面上的所有鏈接,然後(C)推文插件完成並在頁面上注入一堆新鏈接早。

因此,您可以嘗試一下,看看您使用的tweet插件是否具有某種「全部完成」或其他完成回調,然後您可以使用它來更改鏈接標記。或者,像我建議的另一個答案一樣,我不僅要嘗試更改鏈接標籤,而且要在網頁上的任何鏈接點擊時監聽(實時),並在該時間點攔截它們。這樣,您就不必擔心推文插件的時間安排/完成情況,因爲您可以使用在任何時間點均可正常工作的事件代理(live)。查看來自Petah的答案,瞭解如何做到這一點的一個很好的例子。

祝你好運!

相關問題