jQuery.each()不会返回

时间:2010-11-23 08:24:51

标签: jquery loops each

我有以下循环,它只是检查名为items的表中的所有“绿色”行,以查看哪一行包含一个名为xxx的隐藏输入元素,该元素与给定值不匹配:

$('table#items tr.green').each(function () {
    if (myvalue != $('input#xxx', $(this)).val()){
        alert('The xxx element is not the same as ' + myvalue + ' on all green rows');
        return;
    }
});

但是此代码下方有一个jQuery.ajax()请求,即使显示警告框,jQuery.ajax()仍会运行!知道为什么吗?

5 个答案:

答案 0 :(得分:3)

请记住jQuery.each将回调作为参数。你传给它一个匿名函数,并且在table#items tr.green匹配的每个项目上调用此函数,因此所有return都会从匿名函数返回。

您需要设置某种标志才能达到您想要的效果:

var flag =  false;
$('table#items tr.green').each(function () {
    if (myvalue != $('input#xxx', $(this)).val()){
        alert('The xxx element is not the same as ' + myvalue + ' on all green rows');
        flag = false;
    }
});

if (flag)
{
    return;
}

答案 1 :(得分:1)

你想要的是将函数返回到每个函数之外?你不能只返回每个内部,每个生成一个函数,你现在返回这个funktion关闭,循环仍然运行,你必须做这样的事情

var continue = true;

jQuery(bla).each(function(){
    if(bla == blubb){
        continue = false;
    }
});

if(!continue){
    return
}

答案 2 :(得分:0)

JQuery的.each提供的每个元素上运行传递的函数。因此,即使您决定从其中一个函数返回,它仍将执行所有剩余元素的函数。

如果要结束整个.each调用,则需要在调用开始时检查一些变量,并跳过函数的处理。但是,您可以不停止JQuery为所有元素执行该函数,因为只返回了其中一个元素。

答案 3 :(得分:0)

代码中的返回从每个方法的内部回调返回。它不会从包含jQuery.each

的函数返回

答案 4 :(得分:0)

当你返回时,你实际返回的是.each()执行的函数,其他迭代仍然会运行。相反,尝试使用与.ajax()调用相同范围内的标志。