这个JQuery代码块有什么问题?

11 浏览
0 Comments

这个JQuery代码块有什么问题?

我有一些代码:

$(xml).find("strengths").each(function() {
   //代码
   //如何根据条件退出这个块。
});

如何根据条件从"each"代码块中退出?

更新:

如果我们有类似这样的代码:

$(xml).find("strengths").each(function() {
   $(this).each(function() {
       //我想同时从两个each循环中退出。
   });
});

是否可能从内部的"each"函数中同时退出两个"each"函数?

# 19.03.2013

如果你想继续而不是退出

return true;

0
0 Comments

问题原因:在这段JQuery代码中,通过在匿名函数中使用return false来尝试从循环块中返回,以根据某个条件来跳出循环。

解决方法:根据JQuery的文档,在each方法中使用return false将完全停止循环,类似于在普通循环中使用break。如果想要跳到下一个迭代,应该在循环中使用return true,类似于在普通循环中使用continue。因此,要解决这个问题,应该使用return true来实现跳到下一个迭代,而不是使用return false来尝试跳出循环。

整理后的文章如下:

在这段JQuery代码中,通过在匿名函数中使用return false来尝试从循环块中返回,以根据某个条件来跳出循环。然而,根据JQuery的文档,在each方法中使用return false将完全停止循环,类似于在普通循环中使用break。如果想要跳到下一个迭代,应该在循环中使用return true,类似于在普通循环中使用continue。因此,要解决这个问题,应该使用return true来实现跳到下一个迭代,而不是使用return false来尝试跳出循环。

0
0 Comments

这段jQuery代码的问题是什么?原因是该代码混淆了JavaScript和jQuery的概念。解决方法是将代码中的"JavaScript"替换为"jQuery"。

jQuery中的return false;与JavaScript和PHP中的break;有相同的作用,用于停止循环。而return true;return;与PHP中的continue;有相同的作用,用于继续循环。

在jQuery中,return false;被解释为停止循环,而不是返回布尔类型,这与JavaScript和PHP中的用法有所不同。

因此,正确的写法应该是使用return false;而不是return false;

0
0 Comments

这段代码的问题在于无法通过简单的"return"语句来中断循环,需要使用"return false"来实现。原因是在jQuery的each()方法中,如果回调函数返回非false的值,将会像for循环的continue语句一样跳到下一次迭代,而不是中断整个循环。

解决方法是在需要中断循环的地方使用"return false"语句。例如,在上述代码中,可以通过判断某个条件(例如iWantToBreak)来决定是否中断循环,代码可以修改为:

$(xml).find("strengths").each(function() {
    if (iWantToBreak)
        return false;
});

需要注意的是,这种中断循环的方式并不会终止整个函数的执行,只会中断当前的each循环。如果希望在循环中检查必填字段后继续执行,可以使用一个变量(例如kill)在循环中设置,然后在循环外部读取该变量以决定是否返回。例如:

var kill = 0;
$.each(array, function(index, value) {
    if (!requiredField(value)) {
        kill = 1;
        return false;
    }
});
if (kill == 1) {
    return;
}

这样就可以在循环中检查必填字段,如果有缺失则中断循环,并在循环外部根据kill变量的值来决定是否继续执行后续代码。

0