点击事件后激活滚动侦听器的正确方法是什么?
我目前正在使用:
$('.button').click(function (event) {
$(window).on("scroll", someFunction);
}
someFunction = function() {
//do stuff
$(window).off("scroll"); //disable scroll listener
}
在单击事件上,我启用了运行someFunction的滚动侦听器。该函数完成后填充并禁用滚动侦听器。滚动侦听器在单击时再次启用。
我担心的是我做得不对。请指教!
注意:滚动侦听器无法无限期运行。它从点击开始,必须在myFunction结束时完成。
注意:我不会尝试检测用户何时停止滚动..
答案 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