我正在使用 bootstrap Collapse() 脚本来展开/折叠 div。我想在 .hidden() 上附加 window.scroll() 方法并在 .shown() 中停止 window.scroll() 。但 window.scroll() 总是附加到该 div 上。
我的代码片段
$('body').delegate('#div1', 'shown', function() {
$('#label').children('i').removeClass('icon-plus-sign');
$('#label').children('i').addClass('icon-minus-sign');
$(window).scroll(function(e) {
e.preventDefault();
e.stopPropagation();
});
});
$('body').delegate('#div1', 'hidden', function() {
$('#label').children('i').removeClass('icon-minus-sign');
$('#label').children('i').addClass('icon-plus-sign');
$(window).scroll(function() {
var scrollTop = $(window).scrollTop();
$('#content').stop().animate({
"marginTop": (scrollTop + '40px;' : (scrollTop) + "px" }, "slow");
});
})
最佳答案
$('body').delegate('#div1', 'shown', function () {
$('#label').children('i').removeClass('icon-plus-sign');
$('#label').children('i').addClass('icon-minus-sign');
$(window).off('scroll');
});
$('body').delegate('#div1', 'hidden', function () {
$('#label').children('i').removeClass('icon-minus-sign');
$('#label').children('i').addClass('icon-plus-sign');
$(window).on('scroll', function () {
var scrollTop = $(window).scrollTop();
$('#content').stop().animate({
"marginTop": (scrollTop + '40px;': (scrollTop) + "px"
},
"slow");
});
})
注意:您应该使用 .on()
而不是 delegate
关于javascript - 如何在特定事件后停止 window.scroll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17788339/