2013-10-22 68 views
0

我想應用一個jQuery的滾動條到另一個本地jquery調用的內容填充的div。我的問題是,IE似乎並沒有等待div中的內容加載,然後調用滾動條的腳本...因此,滾動條無法正常工作。IE瀏覽器不等待內容加載從Ajax調用

  • 所有其他瀏覽器都正常工作,IE(版本8,9)是唯一不起作用的瀏覽器。
  • 當div包含靜態HTML代碼,IE工作正常
  • 調用的滾動功能是window.load

奇怪的裏面:如果我調用之前堅持警報()調用滾動代碼,它會工作。

我試着添加一個setTimeout()函數,但沒有奏效。

的代碼看起來像這樣

<head> 
    <script> 
     $(document).ready(function() { 
      // ajax call to populate scrollable div with html content 
     }); 
    </script> 
</head> 
<body> 

    <div class="scrollableDiv"> 

     // content populated by script call above 

    </div> 

    <...... lots more html here .....> 
    <!-- very bottom of page --> 
    <script> 
     $(window).load(function(){ 
      // alert ("IF I ADD THIS ALERT, EVERYTHING WORKS FINE IN IE"); 
     $('.scrollableDiv').ClassyScroll(); 

     }); 
    </script> 
    </body> 

任何想法?

+0

我聽說過IE被奇怪,當你同時使用的document.ready和window.load - 你嘗試只是在做的一切的document.ready? –

+2

難道你不只是$('.scrollableDiv')。ClassyScroll();在你使用'填充滾動div'的函數結束時觸發? – Alex

+1

可能有可能'/ /調用函數來填充HTML內容的滾動div'正在窗口加載事件後完成。取決於你的IE版本,document.ready實際上可能是因爲缺少功能而在窗口加載而不是已準備好的情況下觸發。 –

回答

0

Jquery Ajax will help

看來,你是通過Ajax調用加載可能的scrollableDiv內容?如果是這樣,那麼當window.load發生時,該數據可能不會存在。 window.load不會等待異步調用完成。

解決方案將放置$('.scrollableDiv')。ClassyScroll();在$(document).ready(function(){})的末尾;或者把它放在ajax調用的成功回調中。

我做的事情AJAX所有的時間jQuery中它看起來是這樣的:當文檔準備

$.ajax({ 
    beforeSend: function(req, settings) { 
     // display a please wait spinner 
    }, 
    complete: function(req, status) { 
     // hide the please wait spinner 
     // also a possible place to put code you want run after the DOM has changed 
    }, 
    async: true, // could omit as this is the default 
    data: {param1:foo, param2:bar}, 
    dataType: "html", 
    error: function(req, status, err) { 
     // report the bad error 
    }, 
    success: function(data, status, req) { 
       // do the fun stuff here 
    }, 
    type: "POST", 
    url: someURL 
}); 
+0

我一開始也認爲,但是他沒有提及它在其他瀏覽器中不起作用,並且如果他在做Ajax,它不會在任何瀏覽器中始終如一地工作 –

+0

你是對的凱文,只需調整一下。 ..它不會在任何瀏覽器中始終如一地工作。它可以在任何瀏覽器中隨時工作,如果在第二秒之前第一次呼叫就完成了。 – kasdega

+0

是的,我使用ajax調用來填充可滾動的div。有什麼方法可以測試並查看代碼何時準備就緒,然後運行滾動功能?我試過使用$('。tagInScrollContent')。length來檢查ajax調用生成的html是否存在,但沒有成功。我感到困惑,爲什麼它只是IE瀏覽器有問題.... – itrickski

1

$(document).ready(function() {

你div的內容填充。每當你的網頁是完全加載

$(window).load(function(){

ClassyScroll函數被調用。

我們需要知道你在做什麼來填充你的div,但它可能是異步的並且不阻止加載事件。

無論如何,將它們兩個用於相同的功能通常是一個糟糕的主意。我建議什麼時候只要你知道你的div被填充了,就簡單地調用ClassyScroll(如果是同步的話,就在後面,如果是異步的,就在回調中)。

喜歡的東西:

$(document).ready(function() { 
    // call function to populate scrollable div with html content 
    populateDivWhatever(); 
    // call your classyscroll function 
    $('.scrollableDiv').ClassyScroll(); 
}); 
相關問題