我想在将新内容添加到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>
这很直接。
答案 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
- 一旦初始化窗格,它们都会产生相同的效果...