2013-10-22 67 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(); 
}); 
相关问题