jQuery each()函数控制相同的元素

时间:2013-12-22 20:36:14

标签: jquery

我有一个问题,我无法想出如何解决这个问题。

我有一个巨大的形式,我有汽车会议的“飞行员”。在我的字段中,我需要检测当前字段是否具有长度> = 2

如果其中一个是真的,我需要显示一个特殊的警告框。

我实际上在onChange函数上使用了每个(函数)。

问题是如果第一个值返回true而第二个返回false,我的警告将隐藏。

我想知道每个()函数中是否存在某种“中断”或“继续”。

我的代码

function check_dizaine(){

$('.check_dizaine').each(function()
{
    if($(this).val().length >= 2)
    {

        $('#attention_pilotes').show();

        $(this).css('border', '1px solid #daa421');
        $(this).css('background','#f8ecc9');
    }
    else
    {
        $(this).css('border', '1px solid #a1a1a1');
        $(this).css('background','#ffffff');

        $('#attention_pilotes').hide();
    }
});

}

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

您可以通过从回调函数返回.each()来“中断”false循环。返回true或仅使用return;就像是“继续”。

$('.check_dizaine').each(function() {
    if ($(this).val().length >= 2) {
        $('#attention_pilotes').show();
        $(this).css('border', '1px solid #daa421');
        $(this).css('background','#f8ecc9');
        return false; // <--- *** Return false here ***
    } else {
        $(this).css('border', '1px solid #a1a1a1');
        $(this).css('background','#ffffff');
        $('#attention_pilotes').hide();
    }
});

但我认为做这样的事情会更好:

var showWarning = false;
$('.check_dizaine').each(function() {
    if ($(this).val().length >= 2) {
        showWarning = true;
        return false;
    }
});
if (showWarning) {
    $('#attention_pilotes').show();
    $(this).css('border', '1px solid #daa421');
    $(this).css('background','#f8ecc9');
} else {
    $(this).css('border', '1px solid #a1a1a1');
    $(this).css('background','#ffffff');
    $('#attention_pilotes').hide();
}

这样,你最多只能执行一次else-block中的代码。对于循环的每次迭代,都不会出现一次。