Hoe los je jQuery uit elke lus

Hoe kom ik uit een jQuery each-lus?

Ik heb geprobeerd:

 return false;

In de loop maar dit werkte niet. Enig idee?

Bijwerken 5-9-2020

Ik heb de return false; op de verkeerde plaats gezet. Toen ik het in de lus stopte, werkte alles.


Antwoord 1, autoriteit 100%

Om een ​​break te $.each of $(selector).each lus, moet u retourneer false in de lus-callback.

Als true wordt geretourneerd, gaat u naar de volgende iteratie, wat overeenkomt met een continue in een normale lus.

$.each(array, function(key, value) { 
    if(value === "foo") {
        return false; // breaks
    }
});
// or
$(selector).each(function() {
  if (condition) {
    return false;
  }
});

Antwoord 2, autoriteit 4%

Volgens de documentatie zou return false; het werk moeten doen.

We kunnen de $.each()-lus [..] doorbreken door de callback-functie te maken
return false.

Retourneer false in de callback:

function callback(indexInArray, valueOfElement) {
  var booleanKeepGoing;
  this; // == valueOfElement (casted to Object)
  return booleanKeepGoing; // optional, unless false 
                           // and want to stop looping
}

BTW, continue werkt als volgt:

Het retourneren van niet-false is hetzelfde als een continue instructie in een for-lus; het springt onmiddellijk naar de volgende iteratie.


Antwoord 3, autoriteit 3%

Ik kwam de situatie tegen waarin ik aan een voorwaarde voldeed die de lus verbrak, maar de code na de .each()-functie werd nog steeds uitgevoerd. Vervolgens heb ik een vlag ingesteld op “true” met een onmiddellijke controle op de vlag na de functie .each() om ervoor te zorgen dat de code die volgde niet werd uitgevoerd.

$('.groupName').each(function() {
    if($(this).text() == groupname){
        alert('This group already exists');
        breakOut = true;
        return false;
    }
});
if(breakOut) {
    breakOut = false;
    return false;
} 

Antwoord 4, autoriteit 3%

Ik heb een Fiddle gemaakt voor het antwoord op deze vraag omdat het geaccepteerde antwoord onjuist is en dit is de eerste StackOverflow-thread die van Google is geretourneerd met betrekking tot deze vraag.

Om uit een $.each te komen, moet je return false;

Hier is een viool die het bewijst:

http://jsfiddle.net/9XqRy/


Antwoord 5

Ik weet dat het een vrij oude vraag is, maar ik heb geen antwoord gezien dat duidelijk maakt waarom en wanneer het mogelijk is om met retourneren te breken.

Ik wil het graag uitleggen met 2 eenvoudige voorbeelden:

1. Voorbeeld:
In dit geval hebben we een eenvoudige iteratie en willen we breken met return true, als we de drie kunnen vinden.

function canFindThree() {
    for(var i = 0; i < 5; i++) {
        if(i === 3) {
           return true;
        }
    }
}

als we deze functie aanroepen, zal het gewoon de true retourneren.

2. Voorbeeld
In dit geval willen we herhalen met jquery’s elke functie, waarvoor een anonieme functie nodig is als parameter.

function canFindThree() {
    var result = false;
    $.each([1, 2, 3, 4, 5], function(key, value) { 
        if(value === 3) {
            result = true;
            return false; //This will only exit the anonymous function and stop the iteration immediatelly.
        }
    });
    return result; //This will exit the function with return true;
}

Antwoord 6

“elk” gebruikt de terugbelfunctie.
De callback-functie wordt uitgevoerd ongeacht de callback-functie, dus het is niet mogelijk om vanuit de callback-functie terug te keren naar de callback-functie.

gebruik for loop als je de uitvoering van de loop moet stoppen op basis van een voorwaarde en in dezelfde functie moet blijven.


Antwoord 7

Ik gebruik deze manier (bijvoorbeeld):

$(document).on('click', '#save', function () {
    var cont = true;
    $('.field').each(function () {
        if ($(this).val() === '') {
            alert('Please fill out all fields');
            cont = false;
            return false;
        }
    });
    if (cont === false) {
        return false;
    }
    /* commands block */
});

als cont niet false is, voert u het commandoblok uit

LEAVE A REPLY

Please enter your comment!
Please enter your name here

twenty − 6 =

Other episodes