Не удается загрузить jScrollPane динамически с контентом? - PullRequest
0 голосов
/ 16 февраля 2011

Я хочу повторно инициализировать jScrollPane при добавлении нового контента, загруженного в div, вот что я получил:

var pane = $('.content_pane')

function loadContent() {
            $('#content').load(toLoad,'',showNewContent())
             $('.content_pane').jScrollPane();
             pane.reinitialise();
        }

Это как бы разбивает страницу, но я новичок в JavaScript, поэтому я думаю, что, вероятно, что-то делает не так.

Обновлено:

    function loadContent() {
        $('#content').load(toLoad,'',showNewContent)

    }
    function showNewContent() {
        $('#content').show(1,hideLoader());
        $('.content_pane').jScrollPane();
     pane.reinitialise(); 

    }

Он все еще загружается только один раз?!

Обновление 2:

function loadContent() {
        $('#content').load(toLoad,'',showNewContent)

    }

    function showNewContent() {
        $('#content').show(1,hideLoader());
        $('.content_pane').jScrollPane();
            var api = $('.content_pane').jScrollPane(
    {
        showArrows:true,
        maintainPosition: false
    }
).data('jsp');

        api.getContentPane();
        api.reinitialise();
    }

HTML:

 <div id="content_pane" class="content_pane">
        <div id="content" >  
        <!-- content delivered here -->     
         </div>
    </div>

Это довольно просто.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2011

Если вы используете jScrollPane 2, вам нужно использовать метод getContentPane, чтобы получить ссылку на панель для загрузки содержимого, как в этом примере:

http://jscrollpane.kelvinluck.com/ajax.html

Я не уверен в структуре вашего HTML (где #content относительно .content-pane), поэтому я не могу дать вам полный пример. Однако другая проблема, которую я заметил в вашем коде, заключается в том, что pane является ссылкой на объект jQuery, содержащий вашу панель. Если вы хотите получить ссылку на API (в котором есть метод повторной инициализации), вам потребуется доступ к свойству .data('jsp') после инициализации jScrollPane. Однако в любом случае нет необходимости вызывать reinitialise сразу после jScrollPane - они оба имеют одинаковый эффект после инициализации панели ...

0 голосов
/ 16 февраля 2011

Этот код:

$('.content_pane').jScrollPane();
pane.reinitialise();

Вызывается до получения данных.Попробуйте переместить этот код в showNewContent.

и удалить () из showNewContent().Это обратный звонок.Вы должны дать функцию, а не вызывать ее.Звонить на jScrollPane следует только один раз.

Вот исправленная версия:

$('.content_pane').jScrollPane();
function loadContent() {
    $('#content').load(toLoad,'', function(){
        showNewContent();
        pane.reinitialise(); 
    });
}
...