2013-10-15 86 views
1
頁面

我有這樣的代碼:的JQuery load()函數重載

$("a.ajax").on('click', function() { 
    ajax_link(); 
}); 

function ajax_link() { 
    $('#ajax_load').remove(); // Remove js 
    $('#section').html('<?php echo $this->ajax_loading; ?>'); 
    setInterval(function() { 
     $('#section').load($(this).attr('href')+'&ajax=true'); 
     return false; 
    }, 1000); 
} 

但是,當我點擊鏈接它重新加載,而不是加載內容的頁面。有誰知道爲什麼?

我添加了其餘代碼以確保它不是那樣。

回答

1

您需要防止導致頁面重新加載的錨點的默認行爲。您可以通過event參數中可用的preventDefault()方法來完成。

$("a.ajax").on('click', function(e){ 
     e.preventDefault(); 
     ajax_link.call(this); 
}); 

的另一個問題是,setInterval的回調this內代表窗口,而不是你所點擊的錨,所以緩存this上下文變量並使用它。

function ajax_link(){ 
var self = this; //Cache it here 
setInterval(function(){ 
    $('#section').load(self.href +'&ajax=true'); 
     return false; //You dont need this. 
    },1000); 
} 

或者只是將其綁定:

$("a.ajax").on('click', ajax_link); 


function ajax_link(e){ 
var self = this; //Cache it here 
e.preventDefault(); 
setTimeout(function(){ //Use setTimeout 
    $('#section').load(self.href +'&ajax=true'); 
     return false; //You dont need this. 
    },1000); 
} 
+0

這仍然無法正常工作。 '#部分'現在只是空白。 – Jay

+0

@Jay立即看到我的更新。 – PSL

+0

似乎仍然無法加載頁面。你需要更多信息嗎?如果是這樣?謝謝隊友 – Jay

0

使用e.preventDefault()

事件的默認動作不會被觸發。

$("a.ajax").on('click', function (e) { 
    e.preventDefault(); 
    ajax_link(); 
}); 

,或者您可以如果您使用的是最新版本的jQuery的修改HTML

<a class="ajax" href="javascript:void(0)">Load ajax</a> 
+0

感謝您的支持和幫助 – Jay

+0

@Jay歡迎高興地幫助:) –

0

,您可能會返回從您的單擊事件處理程序錯誤。返回false將阻止default()和stopPropagation()。 StackOverflow有一個參考... event.preventDefault() vs. return false