Javascript 单击属性时如何停止延迟

Javascript 单击属性时如何停止延迟,javascript,jquery,html,Javascript,Jquery,Html,通过测试,我试图找出如果单击另一个属性,如何停止延迟。我会发布网站地址,以便更好地解释这个问题,但基本上,当你按menu时,我的导航会延迟出现,当我按Assignment 6时,我希望所有其他内容都隐藏起来,它确实会这样做,但是我看到了,因为它隐藏时有一个延迟,它没有完成延迟,它将继续打印出其余的元素,即使它们应该被隐藏。这也是一个免责声明,我以前在这个网站上受到了很大的热议,因为我认为人们认为我期望得到答案。事实并非如此,我喜欢学习,虽然答案会很有帮助,而且我能够去设计它并学习它,但我更愿意得

通过测试,我试图找出如果单击另一个属性,如何停止延迟。我会发布网站地址,以便更好地解释这个问题,但基本上,当你按menu时,我的导航会延迟出现,当我按Assignment 6时,我希望所有其他内容都隐藏起来,它确实会这样做,但是我看到了,因为它隐藏时有一个延迟,它没有完成延迟,它将继续打印出其余的元素,即使它们应该被隐藏。这也是一个免责声明,我以前在这个网站上受到了很大的热议,因为我认为人们认为我期望得到答案。事实并非如此,我喜欢学习,虽然答案会很有帮助,而且我能够去设计它并学习它,但我更愿意得到一些指导。所以,是的,如果有人认为这就是我在这里的目的,我不仅仅是在寻找答案(当我无法找到其他方法时,我来到这里)

我的jQuery脚本:

$(document).ready(function () {

    //$('ul').hide();
    $('ul li').hide();
    $('nav>li').hide();

    $('nav>h1>').click(function (event) {
        event.preventDefault();
        $('nav>ul li:hidden').each(function(i) {
            $('nav>li').show();
            $('nav>h1').hide();
            $(this).delay(i*600).fadeIn(200);
        });

        $('nav>ul li:visible').each(function(i) {
            $('nav>h1').hide();
            $(this).delay(i*600).fadeOut(200);
        });

        return false;

    }); //closes a.btnDown

     $('nav>li').click(function (event) {
        $('nav>h1').show();
        $('nav>li').hide();
        $('ul li').hide();

        return false;

        }); //closes a.btnDown
}); //closes .ready

您可以用
setTimeout
替换延迟,并用
cleartimout

$('nav>ul li:hidden').each(function(i) {
    $('nav>li').show();
    $('nav>h1').hide();
    var fadeTimeout = setTimeout(function () {
      $(this).fadeIn(200);
    }, i * 600);
});

$('nav>li').click(function (event) {
    $('nav>h1').show();
    $('nav>li').hide();
    $('ul li').hide();
    clearTimeout(fadeTimeout);
    return false;
});

setTimeout是一种有用的机制,可以解决您的问题。它等待(至少)指定的延迟,并执行回调函数

var elements = $('nav>ul li:hidden');

var timeoutId;
function doAnimation(index) {
    timeoutId = window.setTimeout(function () {
        if (index < elements.length) {
            $(elements[index]).fadeIn(200);
            doAnimation(++index);
        }
    }, 600);
}
我已经做了一个小提琴来演示这个概念,但是我还没有实现一个完整的解决方案。希望这能帮助你进一步完成你的项目


如果我是用C#或任何编程语言编写的,这将是一个循环,我还不知道jquery是否有循环。javascript和jquery都有循环。javascript有布尔值。jQuery是用javascript构建的。你可以用javascript,你的意思是一个简单的if语句,对吗?“我以前在这个网站上得到了很多热,因为我认为人们认为我期待答案”——对于那些人,我只能说“如果不是提供答案,问答网站还有什么其他用途?”我很接近,然后我试着做一个clearQueue(),我发现当我做你的时,虽然它根本不做导航动画。
window.clearTimeout(timeoutId);