Jscrollpane в fancybox не работает - PullRequest
       20

Jscrollpane в fancybox не работает

2 голосов
/ 04 сентября 2011

У меня проблема с использованием jscrollpane в fancybox.Хотя после кошмарных усилий я создал собственную полосу прокрутки, она появляется только при первом открытии лайтбокса.Когда я закрываю лайтбокс и пытаюсь открыть его снова, создается впечатление, что 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 ]

1 голос
/ 05 сентября 2011

Я наконец-то решил это.Сначала я создал объект 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 и IE6.Поэтому, когда я закрываю окно наложения, я получаю эту ошибку: '0.nodeName' равно нулю или нет.нет объявленной переменной scrollpane .Я просто не знаю, как это исправить.

Есть мысли, пожалуйста?Приветствия ..

0 голосов
/ 29 марта 2013

У меня была та же проблема, и она потратила около 10 часов, чтобы заставить панель прокрутки работать в fancybox. Так. Вы должны использовать старый модный 1.3.4 и jscrollpane Версия: 2.0.0beta12 , Последнее обновление: 2012-09-27 из 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;                    
                           })
                }); 

И только одна вещь, чтобы заставить его работать нормально после закрытия и следующего нажатия кнопки, это добавить к 89-й строке jquery.jscrollpane.js.

pane = undefined;
...