(第一个问题很好:) :)
我试图禁用滚动,为div设置动画,然后重新启用滚动。到目前为止,我已经完成了这个令人难以置信的任务的前两个部分,但是唉,我似乎无法让它再次滚动。
我正在使用由JeanValjean在How to programmatically disable page scrolling with jQuery上定义的lockScroll()和unlockScroll()函数
非常感谢任何帮助。请参阅演示http://jsfiddle.net/Chris_James/1xxL5dnp/6/
jQuery(document).ready(function(){
$(window).scroll(function(){
var p = $( ".testi" );
var offset = p.offset();
if ($(this).scrollTop() > offset.top - $(window).height()/2) {
lockScroll();
$('.testi').addClass( 'testishow' );
setTimeout(function(){
$('.testimonial').fadeIn('fast');
unlockScroll();
},700);
}
})
});
答案 0 :(得分:0)
您可以使用函数回调,例如
$('.testimonial').fadeIn('fast', function(){
unlockScroll();
});
在这种情况下,函数unlockScroll()
将仅在fadeIn
完成动画后执行。
UPD:已添加Fiddle
答案 1 :(得分:0)
jQuery(document).ready(function(){
$(window).scroll(function(){
var p = $( ".testi" );
var offset = p.offset();
if ($(this).scrollTop() > offset.top - $(window).height()/2) {
lockScroll();
$('.testi').addClass( 'testishow' );
setTimeout(function(){
$('.testimonial').fadeIn('fast', function() {
unlockScroll();
});
},700);
}
})
答案 2 :(得分:0)
像Good.luck推荐的那样,你可以使用回调进行解锁(好吧,我几秒钟就到了......)。我认为你不必宣布一个函数只是unlockScroll。
lock / unlockScroll()方法似乎有点超重。 我会建议cubbius回答"溢出:隐藏" html元素的样式。 从当前滚动事件中创建一个函数并使用以下命令解锁:
$(window).off("scroll touchmove mousewheel", function () {
$(window).on("click", yourScrollMethod);
})
答案 3 :(得分:0)
解决方案 - 在if语句中添加一个类(scrolllocked)并检查它(使用&&)。 Simples。 http://jsfiddle.net/Chris_James/1xxL5dnp/6/
if ($(this).scrollTop() > offset.top - $(window).height()/2 && !p.hasClass("scrollLocked")) {
lockScroll();
p.addClass("scrollLocked");
$('.testi').addClass( 'testishow' );