第一次发布:-)我到处都在寻找答案,但似乎找不到。我不是jQuery专家,但是可以解决我的问题。

PopEasy:http://thomasgrauer.com/popeasy
JScrollPane:http://jscrollpane.kelvinluck.com/index.html

我试图让JSscrollPane在PopEasy模态窗口内工作。术语可能已关闭,但我认为我需要在模态加载后对其进行初始化吗?

这是PopEasy模态的代码:基本上,您单击一个链接,模态将显示:

$('.modalLink').modal({
    trigger: '.modalLink',
    olay:'div.overlay',
    modals:'div.modal',
    animationEffect: 'fadeIn',
    animationSpeed: 300,
    moveModalSpeed: 'slow',
    openOnLoad: false,
    docClose: true,
    closeByEscape: false,
    moveOnScroll: false,
    resizeWindow: true,
    close:'.close-button'
});


通常,JScrollpane只是:

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


我假设(并希望)答案很简单,并且缺少一些小东西,但是我尝试了一些我还不完全了解的事情,例如:

jQuery(document).on('click','.modalLink',function($){
    $('.right-side').jScrollPane({});
});


我需要帮助 :-(

谢谢你们!

最佳答案

由于jScrollPane是在初始化时计算容器的,因此您希望在加载模式后执行init / reinit,因为PopEasy在加载模式后没有API进行回调,所以这有点棘手。

一种简单但较差的方法是添加一个超时,如下所示:

jQuery(document).on('click','.modalLink',function($){
    setTimeout(function(){
        $('.right-side').jScrollPane({});
    }, 500);
});


替代方法是在动画完成后向popeasy添加回调功能以运行回调。
如果您需要重新初始化,则需要像下面这样访问jScrollPane API:

$(function() {
    var pane = $('.right-side');
    pane.jScrollPane({});
    var api = pane.data('jsp');

    jQuery(document).on('click','.modalLink',function($){
        setTimeout(function(){
            api.reinitialise();
        }, 500);
    });
});

10-05 18:39