我有2个活动
首先:
$(window).on("scroll", function() {
if (($(this).scrollTop()+h) >= $(".services-procent-ul").offset().top){
circle();
$(window).off("scroll");
}
});
第二
$(window).on("scroll", function() {
if($(window).scrollTop() > 0){
$('.nav2').fadeIn('slow');
$('.nav1').fadeOut('fast');
}else{
$('.nav2').fadeOut('fast');
$('.nav1').fadeIn('slow');
}
});
执行后我需要禁用的第一个事件。但我需要做第二次活动。
答案 0 :(得分:5)
您可以将event namespace添加到第一个事件,然后按名称空间将其禁用:
$(window).on("scroll.once", function() {
...
$(window).off("scroll.once");
答案 1 :(得分:2)
如果要在执行后“禁用”事件您可以使用Jquery .one()
.one()方法与.on()完全相同,只是处理程序在第一次调用后未绑定
$(window).one("scroll", function() {
//doSomething
});
如果您正在寻找一种方法在某些条件后禁用某些事件回调并且不禁用所有这些回调您可以添加Event Namespace作为@antyrat回答
答案 2 :(得分:2)
如果条件$.Callbacks("once")
返回true,请尝试使用circle
最多拨打($(this).scrollTop()+h) >= $(".services-procent-ul").offset().top
var callbacks = $.Callbacks("once");
callbacks.add(circle);
var scroller = function() {
if ($(window).scrollTop() > 0) {
$('.nav2').fadeIn('slow');
$('.nav1').fadeOut('fast');
} else {
$('.nav2').fadeOut('fast');
$('.nav1').fadeIn('slow');
}
}
$(window).on("scroll", function() {
if (($(this).scrollTop()+h) >= $(".services-procent-ul").offset().top) {
callbacks.fire()
}
scroller()
});