2012-03-29 32 views
1

我与jScrollPane存在同步问题。
我通过Ajax更新div内容,当div更新时,我必须重新初始化jScrollPane。当html代码太大时,jScrollPane()调用似乎只使用我正在更新的部分内容,而一些元素不在scrollPane中。如果我把jScrollPane()调用放到一个setTimeout里面,它可以工作,但是我知道这不是解决这个问题的好方法。
对不起,我的英语不好。jScrollPane同步性

这是代码:

success : function(HTMLcode){ 
    $("#div_inside").empty().html(HTMLcode); 
    $('#pane').jScrollPane(); 
    //SET SCROLL POSITION 
    $('#pane')[0].scrollTo(panetop); 
} 
+0

你在AJAX调用中使用['success' callback](http://stackoverflow.com/q/7326933/901048)吗?请提供更多的代码。 – Blazemonger 2012-03-29 13:45:14

+0

是的,那部分代码在ajax调用的成功回调中。 问题是jScrollPane()在html()函数结束之前调用(它的我的观点),div内的代码没有完全呈现。 这是成功回调中的代码: 'success:function(HTMLcode){(“#div_inside”)。empty()。html(HTMLcode); $('#pane')。jScrollPane(); // SET SCROLL POSITION $('#pane')[0] .scrollTo(panetop); }' – Dario 2012-03-29 14:42:45

+0

您是否正在使用图像加载HTML代码? – Blazemonger 2012-03-29 16:30:07

回答

1

我最近遇到了类似的问题 - 原来,一旦HTML已加载,在HTML的外部图像没有。所以:HTML加载,然后jScrollpane调整大小,然后图像加载并再次改变HTML的长度。

弱解决方案是触发jScrollpane与setTimeout,因为你有。

好的解决方案是通过正在加载的HTML并为每个图像标签分配宽度和高度属性。这样,即使在图像加载之前,它也会是正确的长度。

如果您不能编辑加载的HTML,那么setTimeout可能是您最简单的解决方案。

+0

非常感谢。我已经在img标签中添加了大小,现在它正常工作 – Dario 2012-03-29 19:45:19

+0

我也有类似的问题,不能找出是什么原因造成的问题。增加了HTML大小尺寸,它的功能就像一个魅力! – Swordfish0321 2012-07-02 18:33:13