How do I break out of a jQuery each loop?
I have tried:
return false; in the loop but this did not work. Any ideas?
Update 9/5/2020
I put the return false; in the wrong place. When I put it inside the loop everything worked.
How do I break out of a jQuery each loop?
I have tried:
return false; in the loop but this did not work. Any ideas?
I put the return false; in the wrong place. When I put it inside the loop everything worked.
To break a $.each or $(selector).each loop, you have to return false in the loop callback.
Returning true skips to the next iteration, equivalent to a continue in a normal loop.
$.each(array, function(key, value) { if(value === "foo") { return false; // breaks } }); // or $(selector).each(function() { if (condition) { return false; } }); false in the loop callback."? Where exactly is this?$.each(array, function(key, value) { if(value == "foo") return false; });$().each is done in exactly the same way, your edit only serves to cause confusion.According to the documentation return false; should do the job.
We can break the $.each() loop [..] by making the callback function return false.
Return false in the callback:
function callback(indexInArray, valueOfElement) { var booleanKeepGoing; this; // == valueOfElement (casted to Object) return booleanKeepGoing; // optional, unless false // and want to stop looping } BTW, continue works like this:
Returning non-false is the same as a continue statement in a for loop; it will skip immediately to the next iteration.
I came across the situation where I met a condition that broke the loop, however the code after the .each() function still executed. I then set a flag to "true" with an immediate check for the flag after the .each() function to ensure the code that followed was not executed.
$('.groupName').each(function() { if($(this).text() == groupname){ alert('This group already exists'); breakOut = true; return false; } }); if(breakOut) { breakOut = false; return false; } I created a Fiddle for the answer to this question because the accepted answer is incorrect plus this is the first StackOverflow thread returned from Google regarding this question.
To break out of a $.each you must use return false;
Here is a Fiddle proving it:
I know its quite an old question but I didn't see any answer, which clarify that why and when its possible to break with return.
I would like to explain it with 2 simple examples:
1. Example: In this case, we have a simple iteration and we want to break with return true, if we can find the three.
function canFindThree() { for(var i = 0; i < 5; i++) { if(i === 3) { return true; } } } if we call this function, it will simply return the true.
2. Example In this case, we want to iterate with jquery's each function, which takes anonymous function as 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; } I use this way (for example):
$(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 */ }); if cont isn't false runs commands block
return falsein the wrong place. When I fixed it everything worked.return falsedoesn't work with$().each- because it does.