javascript - jQuery - 为什么我的循环运行两次?

标签 javascript jquery

我有一个循环遍历菜单的第一级 LI 项。我想检测循环的结束,但是,我得到的打印输出似乎运行了两次。

这是我的 JS:

var numNavItems = $("#navigation > li").size() - 1;

$("#navigation > li").each(function(i) {

    $(this).delay( i * 300 ).animate({ opacity: 1 }, 300);

// This runs twice
    $("#content").append("<p>Loop number: " + i + " out of " + numNavItems + "</p>");

    if( i == numNavItems) {
        //$("#navigation li").css({ "opacity" : 1 });
        //alert("End! Number of items = " + numNavItems + ". Last item = " + i );

    }

});

所以,我的逻辑触发了两次。不知道为什么,会不会是我的嵌套列表?

这是 HTML...

<ul id="navigation">
                <li class="selected"><a href="./">Home</a></li>
                <li><a href="./portfolio/">Portfolio</a>

                    <ul>
                        <li><a href="#">Cosmos</a></li>
                        <li><a href="#">Remora</a></li>
                        <li><a href="#">Caspian</a></li>
                        <li><a href="#">Megaway</a></li>
                    </ul>

                </li>
                <li><a href="./philosophy/">Philosophy</a></li>
                <li><a href="./about/">About</a></li>
                <li><a href="./contact/">Contact</a></li>
            </ul>

我使用“>”仅查找第一级 LI。

它打印:

Loop number: 0 out of 4

Loop number: 1 out of 4

Loop number: 2 out of 4

Loop number: 3 out of 4

Loop number: 4 out of 4

Loop number: 0 out of 4

Loop number: 1 out of 4

Loop number: 2 out of 4

Loop number: 3 out of 4

Loop number: 4 out of 4

非常感谢您的帮助。 迈克尔。

最佳答案

检查 this fiddle .它适用于所有浏览器。

可能您在某处调用了两次,或者您有重复的代码。

请注意,这不是在 DOM 就绪或页面加载时调用它的问题,它不会改变任何东西。具有相同 ID“内容”的两个元素也不是问题(输出将是 0 of 4、0 of 4、1 of 4、1 of 4 ...),无论如何它只是忽略第二个 div。

要么检查重复的 HTML 或 JS 代码,要么检查函数调用两次。

您应该将循环放在一个函数中,并在函数的开头添加 console.log('menu loop function');。查看它被调用了多少次。

关于javascript - jQuery - 为什么我的循环运行两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387786/

相关文章:

javascript - 滚动到底部时存储我当前所在的页面JAVASCRIPT

javascript - 用javascript中的另一个覆盖(包装)现有的jQuery点击事件

javascript - 停止按钮点击?

javascript - 验证输入元素后提交 Ajax 表单

jquery - 用于 jquery 的 MVC 4 包使用 {version} 不渲染

javascript - 如何使用正则表达式在 angularjs 上打印值?

javascript - 当我在 firefox/IE 中测试网站页脚时,网站页脚不正常,但在 Chrome 中工作正常

javascript - 比较 Datepicker 日期 Javascript

Javascript Date() 给出错误的日期一小时

javascript - 在控制台中跟踪变量时,如何创建一个新行?