jQuery .each循环没有运行

时间:2013-02-08 03:21:07

标签: javascript jquery loops

我正在尝试执行以下一点jQuery:

    var c = 1;
$("#bench-box .pid-switch").each(function(){
    $(this).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});

如果我将其粘贴到firebug控制台并以这种方式运行,那么它可以完美地运行。这告诉我选择器正在找到我想要它找到的东西,并且它正在按我的意愿执行。

但是,如果我在代码中将其称为函数,而不是通过控制台,则它不起作用。它不会导致错误,它只是不会执行。在我一个接一个地调用的函数列表中跟随它的其余代码继续正常工作。

我无法弄清楚为什么它通过控制台工作而不是其他方式。以下是我在代码中调用它的方式:

$("#button").click(function() {
    adjustPids();
});

function adjustPids() {
var c = 1;
$("#bench-box .pid-switch").each(function(){
    $(this).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});    
}

有什么想法吗?

编辑:

上面的jQuery代码按照正常情况包装在$(document).ready(function()中。我不好在原来的问题中没有提到。

3 个答案:

答案 0 :(得分:0)

据我所知,您发布的代码没有错,控制台中是否有错误?如果你计划调试比我建议使用Firefox与Firebug或Chrome(不需要插件);按f12打开开发人员工具并在控制台中查看输出:

<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
    $(document).ready(function(){
        $("#button").click(function() {
            console.log("ok, clicked");
            adjustPids();
        });

        function adjustPids() {
            var c = 1;
            console.log("adjustPids");
            $("#bench-box .pid-switch").each(function(){
               console.log("and this is",this);
               $(this).attr('name', 'pidsarray['+c+']');
                c = c + 1;
            });         
        };
    });
</script>
</head>
<body >
<div id="bench-box">
    <div class="pid-switch">hello</div>
    <div class="pid-switch">hello</div>
    <div class="pid-switch">hello</div>
</div>
<input type="button" id="button" value="click me" />
</body>
</html>

答案 1 :(得分:0)

道歉。现在一切都正常了。我只是重写了它并移动了一些东西。 (虽然我重写了完全相同的代码,但我从现在到现在都找不到任何差异......非常混乱)。

所以我不确定它为什么会起作用,但我很高兴它会这样做,我将继续我的下一个任务。

感谢您的所有帮助,无论如何。

答案 2 :(得分:-1)

    var c = 1;
$("#bench-box .pid-switch").each(function(i,elm){
    $(elm).attr('name', 'pidsarray['+c+']');
    c = c + 1;
});