2011-12-20 49 views
1

我似乎遇到jScrollPane似乎无法在第一次尝试时加载的问题,也许是因为我的表有图像,我不知道。jScrollPane不会在第一次尝试时加载

This is the demo

我尝试各种东西,如这样的:

$(window).bind('load', function() { 
    $('.scroll-pane').jScrollPane(); 
    $('.scroll-pane').jScrollPane({ 
     reinitialiseOnImageLoad: true 
    }); 
}); 

无济于事:(如果有人知道这是怎么回事,请让我知道了,谢谢!youu

回答

1

它实际上适用于我,但jScrollPane出现一些延迟,我认为这是因为你已经编码初始化像这样:

$(function() { 
    $(window).bind('load', function() 
    { 
     $('.scroll-pane').jScrollPane(); 
    }); 
}); 

绑定到事件load将执行(html,脚本,图像,样式表...)之前等待所有页面资源加载。

是否有一个特定的原因你绑定加载事件?

实际上,你想申请JScrollPane的被初始化时,你.scroll-pane元素已经准备好这么简单的做到这些:

$(function() { 
     $('.scroll-pane').jScrollPane(); 
}); 

编辑

我已经调试页面确认当被称为jScrollPane()。
我不知道该表实际上是用ajax加载的。

问题很简单:当您调用jScrollPane()时,您的.scroll-pane不存在!

当页面是 “准备”,在这里是指在执行什么:

  • 开始加载表:

    $('#whole-ajax-content-one').load('events.html', function() { ... });

  • 执行你绑定加载事件(因为页面实际上已加载,绑定在window.load上与您的ajax加载“events.html”无关:

    $('.scroll-pane').jScrollPane();

    由于您的表格尚未加载/创建,因此$('.scroll-pane')为空!

  • 执行.load(回调)(与.tablesorter(),委托()等)


解决方案是把你的JScrollPane的初始化代码进入回调.load()。这将确保您的.scroll-pane元素确实存在。

注意:我不是100%确定的,但它可能会在连续重新加载时工作,因为涉及浏览器缓存,并且在执行jScrollPanel()时偶然已经存在表。

+0

感谢德罗巴找到!但是,对我来说,它仍然不能在第一次尝试。我尝试加载函数的原因是为了在所有图像加载到表格之前滚动窗格将等待...但是它不起作用。 – pufAmuf 2011-12-20 12:08:25

+0

非常好,感谢Didier的帮助! – pufAmuf 2011-12-20 15:12:01

相关问题