fancybox中的Jscrollpane不起作用

时间:2011-09-04 14:28:53

标签: jquery fancybox jscrollpane

我在fancybox中使用jscrollpane时遇到问题。 虽然经过一番噩梦之后,我让自定义滚动条出现,但它才会在我第一次打开灯箱时出现。当我关闭灯箱,并尝试再次打开它时,看起来jscrollpane找不到内容,因此无法正常运行。

不断看一下firebug,我注意到当我关闭灯箱时,只剩下jspScrollable类(由jscrollpane添加),但所有额外的html都消失了。当我再次打开它时,不再创建额外的html。看起来这次jscrollpane在加载内容之前运行。

这是我的剧本:

    <script type="text/javascript" >

    $(document).ready(function() {

            $("a.enlarge-image").fancybox(
                 {
                   'overlayColor' : '#000',
                   'overlayOpacity' : '0.6',
                   'autoScale' : false,
                   'onComplete' : (function(){
                         $('#fancybox-content').jScrollPane();

            })
        })
    })

     </script>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。我首先创建了一个jscrollpane对象,每次关闭fancybox(onClosed)时都会销毁它,并在每次打开fancybox(onComplete)时再次重新创建它。

现在这是我的脚本:

    <script type="text/javascript">
        var scrollpane;
            $(document).ready(function() {

                $("a.enlarge-image").fancybox(
                                        {       
                'overlayColor' : '#000',
                'overlayOpacity' : '0.6',
                'autoScale' : false,
                'onComplete' : (function(){
                    scrollpane = $('#fancybox-content').jScrollPane({showArrows: true, scrollbarWidth : '20'}).data().jsp;
                       }),
                'onStart' : (function(){
                        }),
                'onClosed' : (function() {

                     scrollpane.destroy();
                       })

                    });
                })
                    </script>

这似乎使fancybox和jscrollpane内部完美结合。 但是,我在IE7&amp;上发现了一个问题。 IE6浏览器。因此,当我关闭覆盖窗口时,我收到此错误:'0.nodeName'为null或不是对象

我认为问题在于,当我销毁滚动窗格onClose时,则没有声明的变量 scrollpane 。我只是不知道如何解决这个问题。

有什么想法吗?干杯..

答案 1 :(得分:0)

有同样的问题,并花了大约10个小时使涡旋盘在fancybox中工作。 所以。您应该使用旧的 1.3.4 ,并使用jscrollpane 版本: 2.0.0beta12 ,上次更新时间:2012-09-27 来自来自demo的github。

JS代码:

$.fancybox(img, {
                    'padding': 0,
                    'width': 1000,
                    'centerOnScroll': false,
                    'overlayOpacity' : 0,
                    'autoScale' : false,
                    'onComplete' : (function(){
                        if (scrollpane) scrollpane.reinitialise();
                        else 
                        scrollpane = $('.fancybox-content').jScrollPane({showArrows: false,
                        verticalGutter: 30}).data().jsp;                    
                           })
                }); 

关闭和点击下一个按钮后,只有一件事能让它正常工作,这就是添加到jquery.jscrollpane.js第89行。

pane = undefined;