我在fancybox中使用jscrollpane时遇到问题。 虽然经过一番噩梦之后,我让自定义滚动条出现,但它才会在我第一次打开灯箱时出现。当我关闭灯箱,并尝试再次打开它时,看起来jscrollpane找不到内容,因此无法正常运行。
不断看一下firebug,我注意到当我关闭灯箱时,只剩下jspScrollable类(由jscrollpane添加),但所有额外的html都消失了。当我再次打开它时,不再创建额外的html。看起来这次jscrollpane在加载内容之前运行。
这是我的剧本:
<script type="text/javascript" >
$(document).ready(function() {
$("a.enlarge-image").fancybox(
{
'overlayColor' : '#000',
'overlayOpacity' : '0.6',
'autoScale' : false,
'onComplete' : (function(){
$('#fancybox-content').jScrollPane();
})
})
})
</script>
非常感谢任何帮助。
答案 0 :(得分:1)
我终于解决了这个问题。我首先创建了一个jscrollpane对象,每次关闭fancybox(onClosed)时都会销毁它,并在每次打开fancybox(onComplete)时再次重新创建它。
现在这是我的脚本:
<script type="text/javascript">
var scrollpane;
$(document).ready(function() {
$("a.enlarge-image").fancybox(
{
'overlayColor' : '#000',
'overlayOpacity' : '0.6',
'autoScale' : false,
'onComplete' : (function(){
scrollpane = $('#fancybox-content').jScrollPane({showArrows: true, scrollbarWidth : '20'}).data().jsp;
}),
'onStart' : (function(){
}),
'onClosed' : (function() {
scrollpane.destroy();
})
});
})
</script>
这似乎使fancybox和jscrollpane内部完美结合。 但是,我在IE7&amp;上发现了一个问题。 IE6浏览器。因此,当我关闭覆盖窗口时,我收到此错误:'0.nodeName'为null或不是对象
我认为问题在于,当我销毁滚动窗格onClose时,则没有声明的变量 scrollpane 。我只是不知道如何解决这个问题。
有什么想法吗?干杯..
答案 1 :(得分:0)
有同样的问题,并花了大约10个小时使涡旋盘在fancybox中工作。 所以。您应该使用旧的 1.3.4 ,并使用jscrollpane 版本: 2.0.0beta12 ,上次更新时间:2012-09-27 来自来自demo的github。
JS代码:
$.fancybox(img, {
'padding': 0,
'width': 1000,
'centerOnScroll': false,
'overlayOpacity' : 0,
'autoScale' : false,
'onComplete' : (function(){
if (scrollpane) scrollpane.reinitialise();
else
scrollpane = $('.fancybox-content').jScrollPane({showArrows: false,
verticalGutter: 30}).data().jsp;
})
});
关闭和点击下一个按钮后,只有一件事能让它正常工作,这就是添加到jquery.jscrollpane.js第89行。
pane = undefined;