jQuery niceScroll不能处理动态DIV

时间:2013-10-09 09:29:29

标签: jquery html dynamic nicescroll

我几周来一直在努力解决这个问题,我已经在这个网站和其他网站上研究过几十个帖子。我有一个非常基本的问题。我有一个DIV标记#scrollarea,可以在一个Web应用程序中动态创建,在运行中多次销毁和重新创建。我的问题是niceScroll功能仅适用于ONCE。第二次尝试后,我不再获得控件

我尝试了几种技术,包括resize()方法,但没有任何效果。我还安装了一个调节器,确保它只安装一次,然后resize()'。再一次,没有任何作用

在这里演示是非常困难的,因为我的代码被锁在安全门后面,并且它是通过脚本触发的。

有没有人建议如何做到这一点?要审核:

  • 页面加载,不存在#scrollarea
  • 脚本触发,#scrollarea已安装到DIV
  • niceScroll附加到#scrollarea ONCE并且工作正常
  • 脚本再次触发,#scrollarea被NEW scrollarea取代
  • 无论我使用什么技术,滚动条都不再有效

尝试的方法:

  • 每次新niceScroll到达时安装#scrollarea
  • 安装niceScroll ONCE,永不再安装
  • 安装niceScroll ONCE,然后发出getNiceScroll().resize()
  • 尝试.mouseover() - > .resize()技术

所有技术都无法在第二次使用时呈现可用的滚动条。

3 个答案:

答案 0 :(得分:6)

更新:找到新功能!

 var setScroll = function(i) {
        if($(i).length>0)
        $(i).niceScroll().updateScrollBar();
} 

调用此函数以更新niceScroll

setScroll(".classWithNiceScroll");

----- 旧方法 -----

使用此而不是调整大小

$("idORclass").getNiceScroll().remove()
$("idORclass").nicescroll();

答案 1 :(得分:0)

  

脚本再次激活,#scrollarea被NEW scrollarea替换

你是什么意思?是你的#scrollarea从DOM中移除了,是否插入了一个新的?或者您是否更换了其内容,例如$('#scrollarea').html( blabla )

你试过$(window).trigger('resize')吗? nicescroll似乎关注调整大小事件,但不关注DOM更改。

答案 2 :(得分:0)

我在使用空div时遇到类似问题,我可以在触发某些事件时添加动态内容,但是,在添加内容时,滚动条不会出现。我通过预先填充滚动条div与另一个空div来实现它的工作,其高度溢出了div,我有滚动条。