javascript – Jquery each():回调中的变量总是有最后一个值吗?

似乎无法弄清楚这里发生了什么.

<div id="navigation">
    <ul id="navList">
        <li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX.html">Discover</a></li>
        <li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/documentation.html">Documentation</a></li>
        <li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/download.html">Download</a></li>
        <li class="navItem"><a href="http://www.jacobsmits.com/placeholderRX/donate.html">Donate</a></li>
    </ul>
    <script type="text/javascript">
        $('.navItem').each(function() {
            $link = $(this).children('a');
            $link.hover(
                function() {
                    $link.css('width', '224px');
                },
                function() {
                    $link.css('width', '192px');
                }
            )
        });            
    </script>
</div>

http://jsfiddle.net/Sth3Z/

它应该为每个链接执行它,而不是只更改最后一个链接,无论哪个链接正在悬停.

最佳答案
在$link:http://jsfiddle.net/Sth3Z/1/之前添加var

    $('.navItem').each(function() {
        var $link = $(this).children('a');   // `var` added

目前,您正在声明一个全局变量,它将在循环中的每次迭代时被覆盖.

转载注明原文:javascript – Jquery each():回调中的变量总是有最后一个值吗? - 代码日志