這裏是我的功能:動態內容加載)射擊兩次
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
$('div#loading').fadeIn();
$('div#content').load('pages/'+pageLoad);
});
我有我的網頁,其中顯示了名爲網頁上的標識內容的DIV,但它似乎加載網頁的兩倍。我知道這是因爲其中一個頁面以混洗順序顯示某些東西,我可以看到它加載了兩次。
// LINK CLICK
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
$('div#loading').fadeIn();
$('div#content').load('pages/'+pageLoad);
throw new Error('bla bla');
});
但什麼都始終會導致它開火兩次: 有趣的是,當我添加
throw new Error('something here');
到函數的結束,像這樣它工作正常。我嘗試重新安排事情等等,但它仍然存在。我使用這個功能的鏈接很簡單:
<a href="#" class="link" data-page="whatever.php">link</a>
只有一個jQuery 1.7.2實例被調用。我無能爲力。我也嘗試過live()和on()函數,並且經歷了完全相同的結果。
!!!編輯!
$(".link").click(function(event){
event.preventDefault();
event.stopPropagation();
pageLoad = $(this).data('page');
console.log('clicked');
$('div#loading').fadeIn(function() {
console.log('faded');
$('div#content').load('pages/'+pageLoad+'.php', function() {
console.log('loaded');
});
});
});
現在...這裏是真正有趣的地方。我沒有改變我的鏈接之一,從
data-page="page.php"
只是
data-page="page"
(因爲.php爲現在直接包含在功能)
當我點擊任何鏈接應該按預期工作,我會加載,點擊,然後淡入我的錯誤控制檯。每個只有一個。該頁面加載兩次。但是,當我點擊不應該工作的鏈接(因爲它包含.php)時,它仍然可用!我得到了我的錯誤控制檯中的三個字和一個錯誤,像這樣:
layout.js:25 clicked
layout.js:27 faded
jquery.min.js:4 GET pages/login1.php.php 404 (Not Found)
layout.js:29 loaded
,但是網頁仍然會加載內容DIV的每一次點擊它,它只有一次加載像它應該...
所以從我在這裏建立,有出現一些奇怪的現象,這裏的jQuery獲取page.php文件和page.php.php當我點擊鏈接
<a href="#" class="link" page="login1.php">
顯示證明當我嘗試並取回頁面甚至不在我的服務器上使用以下鏈接:
<a href="#" class="link" data-page="no">no</a>
,我在哪裏帶有2個錯誤:
jquery.min.js:4 GET pages/no 404 (Not Found)
jquery.min.js:4 GET pages/no.php 404 (Not Found)
這怎麼可能?爲什麼jquery會這樣做?任何人都可以嘗試解釋這裏發生了什麼?
想想我的頭在這裏...嘗試在最後添加返回false而不是拋出錯誤。 –
返回false;沒有幫助它。爲了記錄,我使用Seamonkey(mozilla平臺),但在Chrome中體驗相同的結果。 – user987048
不知道它會幫助任何,但如果你在'href =「javascript:void(0)」' – SpYk3HH