首页 文章

如何跳转到jQuery.each()util中的下一个迭代?

提问于
浏览
403

我正在尝试迭代一系列元素 . jQuery的文档说:

jquery.Each() documentation

返回非false与for循环中的continue语句相同,它将立即跳到下一次迭代 .

我试过称'返回非假;'并且'非虚假;' (没有返回)都没有跳到下一次迭代 . 相反,他们打破了循环 . 我错过了什么?

6 回答

  • 60

    如果你按字面返回 false ,循环只会中断 . 例如:

    // this is how jquery calls your function
    // notice hard comparison (===) against false
    if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
       break;
    }
    

    这意味着您可以返回任何其他内容,包括 undefined ,如果您不返回任何内容,则返回该内容,因此您只需使用空的return语句:

    $.each(collection, function (index, item) {
       if (!someTestCondition)
          return; // go to next iteration
    
       // otherwise do something
    });
    

    它是循环继续的原因,所以我希望没有任何可能返回任何东西都不能继续循环 . 除非他们想要强迫每个人开始返回一些东西来保持循环,否则什么都不返回就是一种保持循环的方法 .

  • 733

    通过'return non-false',它们意味着返回任何不能用于布尔值false的值 . 所以你可以返回 true1'non-false' ,或者你能想到的任何其他东西 .

  • 3

    Javascript有点'真实'和'虚假'的想法 . 如果一个变量有一个值,那么通常你会看到它有'真实性' - 无效,或者没有值倾向于'虚假' . 下面的片段可能会有所帮助:

    var temp1; 
    if ( temp1 )...  // false
    
    var temp2 = true;
    if ( temp2 )...  // true
    
    var temp3 = "";
    if ( temp3 ).... // false
    
    var temp4 = "hello world";
    if ( temp4 )...  // true
    

    希望这有帮助吗?

    此外,值得查看道格拉斯克罗克福德的这些视频

    更新:感谢@cphpython发现损坏的链接 - 我现在更新为指向工作版本

    The Javascript language

    Javascript - The Good Parts

  • 5

    jQuery.noop()可以提供帮助

    $(".row").each( function() {
        if (skipIteration) {
            $.noop()
        }
        else{doSomething}
    });
    
  • -3

    他们所说的非虚假意味着:

    return true;
    

    所以这段代码:

    var arr = [ "one", "two", "three", "four", "five" ];
    $.each(arr, function(i) {
        if(arr[i] == 'three') {
            return true;
        }
        alert(arr[i]);
    });
    

    会提醒一,二,四,五

  • 2

    不要忘记你有时可以从块的末尾掉下来进行下一次迭代:

    $(".row").each( function() {
        if ( ! leaveTheLoop ) {
            ... do stuff here ...
        }
    });
    

    而不是像这样实际返回:

    $(".row").each( function() {
        if ( leaveTheLoop ) 
            return; //go to next iteration in .each()
        ... do stuff here ...
    });
    

相关问题