我在使用jScrollPane' reinitialise()
方法时遇到问题。每当我调用它时,我在第一次初始化时实现的东西就会停止工作......
在我目前的代码中,我做了类似的事情:
$('.scrollable').each(function(){
var e = $(this),
parent = e.parent();
e.jScrollPane({
// parameters
});
var api = e.data('jsp'),
arrowup = e.find('.jspArrowUp'),
arrowdw = e.find('.jspArrowDown');
if ( api.getIsScrollableV() ) {
e.addClass('scrolled-top');
parent.addClass('scroll-parent');
}
e.scroll(function(){
var scrbef = api.getContentPositionY(),
scrmax = api.getContentHeight() - this.clientHeight,
scraft = scrmax - scrbef,
dlayup = (scrbef - 220)/100,
dlaydw = (scraft - 220)/100,
opacup = dlayup > 1 ? 1 : dlayup < 0 ? 0 : dlayup,
opacdw = dlaydw > 1 ? 1 : dlaydw < 0 ? 0 : dlaydw;
if ( scrbef === 0 ) {
e.addClass('scrolled-top').removeClass('scrolled-bot');
} else if ( scraft === 0 ) {
e.addClass('scrolled-bot').removeClass('scrolled-top');
} else {
e.removeClass('scrolled-top scrolled-bot');
}
arrowup.css('opacity', opacup);
arrowdw.css('opacity', opacdw);
});
到目前为止,这么好。它的作用是:
.scrollable
元素scrolled-top
或scrolled-bot
类。在那之后,我有这个:
var throttleTimeout;
$(window).resize(function(){
if ( !throttleTimeout ) {
throttleTimeout = setTimeout( function(){
api.reinitialise();
throttleTimeout = null;
}, 500
);
}
});
$('.deployer').click(function(e){
api.reinitialise();
});
});
现在,这非常简单;调整窗口大小时重新初始化的代码直接来自文档。
但是,只要调用reinitialise()
,调整窗口大小或点击.deployer
元素后,控制箭头的前一个代码即可。不透明度停止工作 - 尽管奇怪的是,scrolled-top
和scrolled-bot
类仍然可以正确添加或删除。
是否有人知道可能导致此行为的原因以及如何解决此问题?
干杯。
答案 0 :(得分:0)
发现了正在发生的事情。
每当您重新初始化时,基本上所有内容都会重置,因此之前存储在arrowup
和arrowdw
中的元素不再存在。添加
var arrowup = e.find('.jspArrowUp'),
arrowdw = e.find('.jspArrowDown');
每个reinitialise()
之后再次
。