如何在特定事件后停止window.scroll()

How to stop window.scroll() after specific event

本文关键字:window scroll 事件      更新时间:2023-09-26

我正在使用bootstrap collapse()脚本来扩展/折叠一个div。我想在.hidden()上附加window.scroll()方法,并在.shown()中停止window.scroil()。但window.scrowl()总是附加到该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