gpt4 book ai didi

javascript - JQ 动画完成后切换类

转载 作者:行者123 更新时间:2023-11-28 05:35:42 27 4
gpt4 key购买 nike

我无法理解为什么我的 toggleClass动画之后的函数内部似乎没有正确触发。查看控制台时,您将能够看到元素 menu正在改变状态,这让我认为它正在快速切换打开和关闭。滚动动画完成后,toggleClass工作符合预期。

我的脚本代码如下:

  $(document).ready(function() {

// initToggle();
stickyNav();
toggleMenu();

});

function stickyNav() {

var navOffset = $('.nav-bar').offset().top;

$(window).scroll(function() {
var nav = $('.nav-bar');
var scroll = $(window).scrollTop();

if (scroll >= navOffset) {
nav.addClass('fixed');
} else {
nav.removeClass('fixed');
}
});
}

function toggleMenu() {
$('.nav-menu').click(function() {
if (!$('.nav-bar').hasClass('fixed')) {
$('html, body').animate({scrollTop: $('.nav-bar').offset().top}, '800',
function() {
$('.menu').toggleClass('active');
$('body').toggleClass('no-scroll');
});
} else {
$('.menu').toggleClass('active');
$('body').toggleClass('no-scroll');
}
});
}

HERE is a "working" codepen of my code which better displays the issue I'm having.

最佳答案

@showdev 链接到与使用 promise() 相关的类似问题。

通过将其更改为以下内容来使脚本正常工作:

function toggleMenu() {
$('.nav-menu').click(function() {
if (!$('.nav-bar').hasClass('fixed')) {
$('html, body').animate({scrollTop: $('.nav-bar').offset().top}, '800').promise().done(function() {
$('.menu').toggleClass('active');
$('body').toggleClass('no-scroll');
});
} else {
$('.menu').toggleClass('active');
$('body').toggleClass('no-scroll');
}
});
}

关于javascript - JQ 动画完成后切换类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com