当前位置: 首页 > 知识库问答 >
问题:

jquery if else语句都按顺序执行

上官扬
2023-03-14

我在研究手机导航。我对简单的if/else如何工作的理解肯定有根本性的错误(我已经有一段时间没有使用jQ/js了),因为这两个语句是串行执行的。实际上‘else’首先运行,然后——不管我是否包含‘toggleNav()’函数或$(nav)。toggleClass('open') -然后也执行' if '语句。

我认为这可能与事件有关,所以我尝试了两个li上的函数。仪表板切换导航和(a.dashboard-toggle-nav-link)中的链接,结果相同;我还尝试过使用长度方法来限定if/else,并检查可见性(我花了一些时间阅读了SO的相关问题);但是,“else”语句执行,然后执行“if”。

顺便说一句,不希望的结果只发生在我的笔记本电脑上(FF

我意识到还有其他方法来切换元素的可见性或显示,但是我的印象是,至少在像这样的例子中,简单地切换类是合适的,

谢谢

威士忌T.

超文本标记语言:

<li class="dashboard-tool dashboard-toggle-nav">
    <a class="dashboard-toggle-nav-link" href="#" title="Show Menu">Menu</a>
</li>
<nav id="nav"> ... etc.

jQ:

$(document).ready(function() {

    $(".dashboard-toggle-nav").on("click", ".dashboard-toggle-nav-link", function(e) {
        var nav = $("nav#nav"); // <nav#nav> holds both #nav-search + ul#nav-catalog

        // same problem using: if (($("nav.open").length == 0)) {
        // same problem using: if ($(nav).is(":visible")) {
        if ($(nav).hasClass("open")) {
            alert(" *if* ");
            $(nav).slideUp(333);
        }

        else {
            alert(" *else* ");
            $(nav).slideDown(666);
        }

        // problem occurs with or without this:
        // $(nav).toggleClass("open");
        // ... or this:
        toggleNav();
        e.preventDefault();
    })

    function toggleNav() {
        alert("toggleNav running");
        $(nav).toggleClass("open");
    }

});

共有1个答案

聂季同
2023-03-14

您的函数运行了两次(从控制台日志结果可以明显看出)。第一次,它走的是错误的道路,第二次,因为第一次的行动,它走了真实的道路。

preventDefault 停止单击事件的默认操作,但它不会阻止事件进一步向上传播 DOM。 stopImmediatePropagation() 停止该传播。

 类似资料:
  • 问题内容: 我有SQL Server 2008 R2,Windows 7 OS。 在服务器内,我有一个通过以下SQL语句创建的表。 在表中,我具有以下值: 我确实对数据库执行了以下SQL语句: 服务器给我以下错误消息: 转换nvarchar值“ 1”时转换失败。 数据类型为int。 我以为我的内部SQL首先执行并创建了一个临时表,因此它不包含在表中,然后SQL解析器将用于过滤临时表。 但是以上似乎

  • 问题内容: 这个问题与执行顺序无关。这只是关于ORDER BY。 在标准执行中是: FROM WHERE GROUP BY HAVING SELECT ORDER BY TOP 编辑:这个问题或多或少是“ 执行ORDER BY表达式时SQL Server是否应用短路评估吗? ”的答案是有时!我只是还没有找到一个合理的理由。参见编辑#4。 现在假设我有一个这样的声明: 这不是我要执行的真实语句,而只

  • 问题内容: 我正在从具有整数id值的大型表(数百万行)中选择一组帐户记录。从某种意义上说,查询是最基本的。我正在做的是建立一个大型的逗号分隔列表,并将其作为“ in”子句传递到查询中。现在,结果是完全无序的。我想做的是按“ in”子句中的值顺序返回结果。 我想我将不得不建立一个临时表并进行联接,这是我想避免的,但可能无法做到。 有什么想法吗?现在,由于我们正试图限制输出大小,每个查询的大小上限为6

  • 问题内容: 在MySQL中执行子句的预定义顺序是什么?它是否在运行时确定,并且此顺序正确吗? 问题答案: MySQL语句的实际执行有些棘手。但是,该标准确实指定了查询中元素解释的顺序。这基本上是在您指定的顺序,但我想和能来后: 条款 条款 条款 条款 条款 条款 这对于了解如何解析查询很重要。例如,您不能使用在子句中的定义的列别名,因为会在之前解析。另一方面,这样的别名可以在子句中。 至于实际执行

  • 在我的示例项目中,我尝试在应用程序启动时做一些初始化工作。 Java 16 Vertx 4.1.0 检查完整的项目代码。 但它并没有像预期的那样工作。 没有像Reactor那样的方法 我找不到一种有效的方法来按顺序执行它们。 更新时间: 我按照建议更改了代码。 并在控制台中获取以下日志。 如何在输入打印结果之前确保插入块中的所有未来都已完成。

  • 本文向大家介绍数据库中的SELECT语句逻辑执行顺序分析,包括了数据库中的SELECT语句逻辑执行顺序分析的使用技巧和注意事项,需要的朋友参考一下 引言   这不是一个什么多深的技术问题,多么牛叉的编程能力。这跟一个人的开发能力也没有非常必然的直接关系,但是知道这些会对你的SQL编写,排忧及优化上会有很大的帮助。它不是一个复杂的知识点,但是一个非常基础的SQL根基。不了解这些,你一直用普通水泥盖房