单击事件后滚动侦听器上的jQuery

时间:2015-05-06 17:23:31

标签: javascript jquery jquery-events

点击事件后激活滚动侦听器的正确方法是什么?

我目前正在使用:

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

someFunction = function() {
   //do stuff 
   $(window).off("scroll"); //disable scroll listener
}

在单击事件上,我启用了运行someFunction的滚动侦听器。该函数完成后填充并禁用滚动侦听器。滚动侦听器在单击时再次启用。

我担心的是我做得不对。请指教!

注意:滚动侦听器无法无限期运行。它从点击开始,必须在myFunction结束时完成。

注意:我不会尝试检测用户何时停止滚动..

3 个答案:

答案 0 :(得分:6)

您可以使用jQuery .one()

$('.button').on('click', function() {
    $(window).one('scroll', someFunction);
});

答案 1 :(得分:3)

每次单击都会添加一个额外的滚动事件侦听器。我会用另外一个变量封装绑定:

var isScrollBindingActive = false;
$('.button').click(function (event) {
    if (!isScrollBindingActive) {
        isScrollBindingActive = true;
        $(window).on("scroll", someFunction);
    }
}

someFunction = function() {
   //do stuff 
   $(window).off("scroll"); //disable scroll listener
   isScrollBindingActive = false; // allow binding again if wished
}

答案 2 :(得分:-1)

您可以通过以下方式执行此操作:

data.table