无法使用内容动态加载jScrollPane?

时间:2011-02-16 13:01:11

标签: javascript jquery dynamic jscrollpane

我想在将新内容添加到div时重新初始化jScrollPane,这是我到目前为止所得到的:

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 :(得分:0)

此代码:

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

在收到数据之前调用。请考虑将此代码移至showNewContent

()移除showNewContent()。这是回调。你应该给予功能,而不是调用它。拨打jScrollPane只需拨打一次。

以下是更正版本:

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

答案 1 :(得分:0)

如果您使用的是jScrollPane 2,则需要使用getContentPane方法获取对窗格的引用以加载内容,如下例所示:

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

我不确定HTML的结构(#content相对于.content-pane)所以我不能给你一个完整的例子。但是我在代码中注意到的另一个问题是pane是对包含窗格的jQuery对象的引用。如果您想获得对API(其上有重新初始化方法)的引用,那么在初始化jScrollPane之后,您将需要访问.data('jsp')属性。但是,无需在reinitialise之后直接调用jScrollPane - 一旦初始化窗格,它们都会产生相同的效果...