2014-01-17 55 views
1

出於某種原因,當重複文件準備射擊,文件準備和所有相關功能觸發多次(通常兩次,但有時甚至不休)自從我已經添加了負載功能的控制範圍內文檔準備就緒(意味着在當前文檔已經加載時將內容加載到DIV中)。jQuery和數據加載到控制

這些都是我用我的頭標記的腳本,這些都是包含在所有頁面(加載到另一個網頁,將有相同的劇本,這是我懷疑導致了問題):

<script src="http://code.jquery.com/jquery-1.8.3.js"></script> 
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script> 
<script src="scripts/mainscript.js"></script> 

mainscript.js代碼:

var counter = 1; 
var hasLoaded = false; 
$(document).ready(function() { 

if (!hasLoaded) { 
    hasLoaded = true; 
    if ($('.next-page').attr("data-loaded") == "false") { 

     console.log(counter + ") STARTED LOADING!"); 
     $(this).attr("data-loaded", "true"); 
     $('.next-page').load($('.next-page').attr("data-link"), function() { 
      counter++; 
      $(this).attr("data-loaded", "true"); 
      console.log(counter + ") FINISHED LOADING!"); 
     }); 

    } 
} 

$('.tbDropDownBig li').click(function (e) { 
    $(this).parent().parent().find('input').val($(this).text()); 
    $(this).parent().fadeOut(100); 
}); 

});從上面的console.log命令

OUTPUT:

1)開始加載! 2)完成加載! 1)開始加載! 2)完成加載! 2)完成加載!

方向檢測問題: 加載到「下頁」的頁面上運行相同的腳本,當加載,文件加載(因爲所有的網頁有此腳本)。

所以再次加載數據。這就是爲什麼我把數據加載屬性,但它沒有幫助。

+1

當我在的jsfiddle HTTP拋出這樣的代碼,我不能重現該問題:// jsfiddle.net/fruz7/。所以我懷疑問題在於你沒有發佈的東西。例如,通過$('。next-page')。load(...)'加載?這個javascript運行的基本頁面是什麼?您可以嘗試的方法是儘可能從網頁中刪除,以消除可能的原因。 – towr

+0

@towr沒有提到的代碼,一切工作順利。我認爲這個問題是造成的,因爲「下頁」總是包含相同的腳本,同樣document.load信息.. 我尋找這個問題的方向是 - 加載的頁面調用同樣的事情,在「hasLoaded」變量不適用於它,因此它重新執行將數據加載到「下一頁」的操作。 我會盡量深入挖掘,但我一直坐在它上面的時間超過它應得的。 – Kfirprods

+0

聽起來像你有很多回傳。 – Pierre

回答

3

停止使用「準備好了」,而​​是綁定「load」事件對窗口這樣解決:

function LoadNextPage() { 
    if (!hasLoaded) { 
     $('.next-page').load($('.next-page').attr("data-link"), function() { 
      $(this).attr("data-loaded", "true"); 
      hasLoaded = true; 
     }); 
    } 
} 

$(window).bind("load", function() { 
    LoadNextPage(); 
}); 
相關問題