繁体   English   中英

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

[英]jQuery on scroll listener after click event

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

我目前正在使用:

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

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

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

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

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

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

你可以使用jQuery .one()

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

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

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
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM