javascript - 使用递增变量时 jquery 循环不起作用

标签 javascript jquery

我试图多次循环一个函数,但由于某种原因它不起作用。有人看到问题了吗?

这行得通

 <script>
 $(document).ready(function() {     
    $('.menuitem0').hover(function(){     
        $('.boxitem0').addClass('box_hover');  

    },     
    function(){    
        $('.box_item0').removeClass('box_hover');     
    });
}});  
</script>

但是当我尝试循环它时它不起作用

 <script>
 $(document).ready(function() {     
 for(var i = 0; i < 10; i++) {
    $('.menuitem'+i).hover(function(){     
        $('.box_item'+i).addClass('box_hover');  

    },     
    function(){    
        $('.box_item'+i).removeClass('box_hover');     
    });
}});  
</script>

最佳答案

悬停回调执行时,循环结束,i 始终为 10

你需要一个闭包

$(document).ready(function() {     
 for(var i = 0; i < 10; i++) {
    (function(k) {
        $('.menuitem'+k).hover(function(){     
            $('.box_item'+k).addClass('box_hover');  

        },     
        function(){    
            $('.box_item'+k).removeClass('box_hover');     
        });
    }
}}); 

更好的方法是定位正确的元素,并且根本不使用循环,例如属性以选择器开头,并假设框在菜单内

$(document).ready(function() {     
    $('[class^="menuitem"]').hover(function(){     
        $('.box_item', this).addClass('box_hover');  
    },     
    function(){    
        $('.box_item', this).removeClass('box_hover');     
    });
});   

关于javascript - 使用递增变量时 jquery 循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22457164/

相关文章:

Javascript Canvas : Collision against enemies not entirely working when rotating player

javascript - 样式 html 元素后跟特定类

javascript - 如何使用 Phonegap 和 javascript 在 iPhone 上隐藏和显示键盘

javascript - 单击事件在单击内部跨度元素时不起作用

javascript - 调用方法时出现异常 'Mongol_verifyDoc' ReferenceError : Match is not defined

javascript - 我如何从 Bootstrap slider 获取当前值?

javascript - 我如何在图像不移动的情况下在图像下滑动切换()文本?

javascript - 如何处理 float 元素的顺序?

javascript - 使用 jQuery 的简单 AJAX HTTP GET

javascript - 标签 javascript 设置最大值