javascript $ .each循环中的非法继续语句

时间:2011-08-11 15:35:44

标签: javascript jquery

我收到一个错误,这是一个非法的继续声明。 我有一个单词列表来检查表单验证,问题是它是否将一些子字符串与保留字匹配,所以我创建了另一个干净单词数组来匹配。如果匹配一个干净的单词,则如果匹配保留字,则继续其他,提醒用户

$.each(resword,function(){
        $.each(cleanword,function(){
            if ( resword == cleanword ){
                continue;
            }
            else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
                console.log("bad word");
                filterElem.css('border','2px solid red');
                window.alert("You can not include '" + this + "' in your Filter Name");
                fail = true;
            }
        });
    });

6 个答案:

答案 0 :(得分:83)

continue语句适用于普通的JavaScript循环,但jQuery each方法要求您使用return语句。返回任何非虚假的内容,它将表现为continue。返回false,它将表现为break

$.each(cleanword,function(){
    if ( resword == cleanword ){
        return true;
    }
    else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
        //...your code...
    }
});

有关详细信息,请参阅jQuery docs

答案 1 :(得分:7)

替换继续
return true;

答案 2 :(得分:3)

您正在使用continue,它适用于jquery for处理程序中的javascript each循环。这不行。 jquery continue中的each相当于返回非假值。

if ( resword == cleanword ){
  return true;
}

答案 3 :(得分:3)

在jQuery.each循环中,您必须返回true或false以更改循环交互:

  

我们可以在特定的迭代中打破$ .each()循环   回调函数返回false。返回非假是与a相同   在for循环中继续声明;它将立即跳到下一个   迭代。

所以你需要这样做:

$.each(resword,function(){
    $.each(cleanword,function(){
        if ( resword == cleanword ){
            return true;
        }
        else if ( filterName.toLowerCase().indexOf(this) != -1 ) {
            console.log("bad word");
            filterElem.css('border','2px solid red');
            window.alert("You can not include '" + this + "' in your Filter Name");
            fail = true;
        }
    });
});

答案 4 :(得分:0)

在Jquery中,每次我们在数组中循环时都调用一个函数,所以continue不起作用,我们需要return true从函数中退出。 只有在没有匿名函数的简单循环中,我们才能使用continue

答案 5 :(得分:-1)

你不能继续使用那里。它会自动继续,只需删除它 - 我认为它应该适用于您的描述。