我在我的網站上通過AJAX加載不同類型的內容。如何使網頁上的所有鏈接調用javascript函數?
我有一個javascript函數,將決定是否打開iframe中的鏈接或基於URL的新選項卡。但問題是如何讓所有鏈接調用該JavaScript函數?
我想:
<base target= processurl()/>
任何想法?
感謝
編輯: jQuery的方法的偉大工程。但它只適用於一個鏈接?當我第一次點擊鏈接時,它會正確調用該功能。但是之後我點擊的任何其他鏈接都沒有任何反應。
我在我的網站上通過AJAX加載不同類型的內容。如何使網頁上的所有鏈接調用javascript函數?
我有一個javascript函數,將決定是否打開iframe中的鏈接或基於URL的新選項卡。但問題是如何讓所有鏈接調用該JavaScript函數?
我想:
<base target= processurl()/>
任何想法?
感謝
編輯: jQuery的方法的偉大工程。但它只適用於一個鏈接?當我第一次點擊鏈接時,它會正確調用該功能。但是之後我點擊的任何其他鏈接都沒有任何反應。
使用jQuery < 1.7:
$('a').live('click', function(ev){
ev.preventDefault(); // stop normal click on link
// do stuff
});
注意的jQuery 1.7更喜歡使用的.on
代替.live
:
$(document).on('click', 'a', function(ev){
....
});
有(至少)兩種方式,你可以處理這個(視關於它如何適合您的Ajax代碼):
target
屬性設置爲適當。所以第一種方式:
$(document).on("click", "a", function(e) {
// stop default navigation
e.preventDefault();
// 'this' is the particular 'a' that was clicked
var url = this.href;
// process url somehow as desired to decide whether to open it
// in new window, or iframe or to replace current page
});
注意到.on()
method從jQuery的版本> = 1.7適用,因此對於較舊的jQuery的使用.delegate()
method或真的老jQuery的使用.live()
method。
第二種方法(假設鏈接時,第一次加載頁面的所有存在):
$(document).ready(function() {
$("a").each(function() {
var url = this.href;
// process url somehow and set the target attribute as appropriate
// e.g. for a new window
this.target = "_blank";
// or for an iframe
this.target = "nameofiframe"
// etc.
});
});
有沒有區別在這種情況下,'live'和'delegate' – 2012-01-27 00:26:52
@cwolves - 不錯,但我認爲越早使用'live()'的習慣越少,我不得不擔心是否/何時完全刪除未來版本的jQuery。 (儘管我仍然在使用'delegate()':碰巧我當前的項目停留在jQuery 1.4.4上,原因是沒有人可以解釋,儘管我不允許更改它。) – nnnnnn 2012-01-27 00:35:42
仍然存在與方法相同的問題一。它工作一次,並不再工作:(我的意思是我點擊的第一個鏈接,iframe加載正常,但之後,沒有任何鏈接我點擊工作。 – user1137403 2012-01-27 03:41:58
如果你有答案的註釋,點擊「添加註釋」離開它的答案下 – 2012-01-27 00:10:21