Frage

Ich versuche, durch eine Reihe von Elementen zu durchlaufen. jQuery-Dokumentation sagt:

jquery.Each () Dokumentation

  

Rückkehr nicht falsch ist das gleiche wie eine for-Schleife-Anweisung in eine fortsetzen, wird es sofort an die nächste Wiederholung überspringen.

Ich habe versucht Aufruf ‚Rückkehr nicht-false;‘ und 'nicht-false;' (Sans zurück), von denen keiner in der nächsten Iteration überspringt. Stattdessen brechen sie die Schleife. Was bin ich?

War es hilfreich?

Lösung

Was bedeuten sie durch nicht-falsch ist:

return true;

So diesen Code:

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

Wird alarmieren eins, zwei, vier, fünf

Andere Tipps

Durch die Rückkehr nicht falsch ", meinen sie einen Wert zurückgeben, die nicht funktionieren würde falsch boolean. So könnte man zurückkehren true, 1, 'non-false', oder was auch immer Sie denken können.

Javascript Art hat von der Idee der ‚Truthiness‘ und ‚falsiness‘. Wenn eine Variable dann einen Wert hat, 9AS Regel werden Sie sehen) es ‚Truthiness‘ hat - null oder kein Wert neigt zu ‚falsiness‘. Die Schnipsel unten helfen kann:

var temp1; 
if ( temp1 )...  // false

var temp2 = true;
if ( temp2 )...  // true

var temp3 = "";
if ( temp3 ).... // false

var temp4 = "hello world";
if ( temp4 )...  // true

Wir hoffen, das hilft?

Auch, es lohnt sich diese Videos von Douglas Crockford Check-out

Update: Dank @cphpython für die defekten Links Spek - ich habe jetzt bei Arbeitsversionen Punkt aktualisiert

die JavaScript-Sprache

Javascript - die guten Teile

Vergessen Sie nicht, dass Sie manchmal fallen nur das Ende des Blocks auf die nächste Iteration zu erhalten:

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

Anstatt tatsächlich wie diese Rückkehr:

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

Die Schleife nur Pausen, wenn Sie buchstäblich false zurück. Ex:

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

Das heißt, Sie irgendetwas anderes zurückkehren können, einschließlich undefined, das ist, was Sie zurück, wenn Sie nichts zurückgeben, so können Sie einfach eine leere return-Anweisung verwenden:

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

   // otherwise do something
});

Es ist möglich, diese von Version variieren können; dies gilt für jquery 1.12.4. Aber wirklich, wenn man den Boden der Funktion auszutreten, sind Sie auch nichts zurückkehren, und das ist, warum die Schleife wird fortgesetzt, so würde ich erwarten, dass es überhaupt keine Möglichkeit, dass die Rückkehr nichts konnte nicht weiter die Schleife. Es sei denn, sie alle zwingen wollen, etwas zu beginnen Rückkehr der Schleife in Gang zu halten, Rückkehr nichts hat einen Weg, um es zu halten.

jQuery.noop () helfen kann,

$(".row").each( function() {
    if (skipIteration) {
        $.noop()
    }
    else{doSomething}
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top