javascript - 解除绑定(bind)滚动功能

标签 javascript jquery twitter-bootstrap

5 秒后,当用户滚动到页面的特定部分时,我将折叠模块(使用 Bootstrap)。问题是,当您手动单击按钮再次折叠时,此函数仍然会触发,而我不希望出现这种行为。

基本上,我希望此函数仅在用户滚动到页面上的特定元素后触发一次。我该如何去做呢?

$(window).on('scroll', function(){
    var scroll = $(window).scrollTop();
    var objectSelect = $('#whatsNextGhost');
    var objectPosition = objectSelect.offset().top;
    var collapseAccordion = function() {
        if (scroll > objectPosition) {
            $('#whatsNextSectionContent').collapse('hide');
        }
    };

    setTimeout(collapseAccordion, 5000);
});

最佳答案

我为你创建了一个小 fiddle :

https://jsfiddle.net/1j790jxb/

在滚动时,我只需将一些内容记录到控制台:

$(window).on('scroll',function(){
  console.log('scroll attached');
});

当我点击按钮(带有 ID 按钮)时,我会分离滚动:

$('#button').on('click', function(event){
  $(window).off('scroll');
});

正如您在 Fiddle 中看到的:单击按钮后,控制台中不再显示任何内容。

您可能还想看看:为(滚动)事件和 requestAnimationFrame 命名空间:

关于javascript - 解除绑定(bind)滚动功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751043/

相关文章:

javascript - Rangy 函数 highlightSelection 性能

javascript - 当我引用另一个 javascript 文件中的图像时,drawImage 不起作用

javascript - jQuery:从表中获取相同字符串的总数

javascript - 如何启用或允许用户在 JQuery 日期选择器字段中手动输入日期?

javascript - 复选框可以工作,但单选按钮在 AngularJS 中不起作用

html - Bootstrap 响应嵌入奇怪的行为

java - 将参数从 javascript 传递到 servlet

javascript - 如何在单击时更改字体很棒的图标

javascript - Bootstrap 4 - 位置碰撞 : sticky; and positon: fixed;

css - part_1 css 文件由 Assetic 创建但未显示在源代码中