use*_*727 60 each jquery loops return
任何人都可以告诉我为什么循环没有在5条目后停止?
http://jsbin.com/ucuqot/edit#preview
$(document).ready(function()
{
someArray = new Array();
someArray[0] = 't5';
someArray[1] = 'z12';
someArray[2] = 'b88';
someArray[3] = 's55';
someArray[4] = 'e51';
someArray[5] = 'o322';
someArray[6] = 'i22';
someArray[7] = 'k954';
var test = findXX('o322');
});
function findXX(word)
{
$.each(someArray, function(i)
{
$('body').append('-> '+i+'<br />');
if(someArray[i] == 'someArray')
{
return someArray[i]; //<--- did not stop the loop!
}
});
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
Jam*_*ice 139
因为当你return在一个each循环中使用一个语句时,一个"非假"值将充当a continue,wheras false将充当a break.您需要false从该each功能返回.像这样的东西:
function findXX(word) {
var toReturn;
$.each(someArray, function(i) {
$('body').append('-> '+i+'<br />');
if(someArray[i] == word) {
toReturn = someArray[i];
return false;
}
});
return toReturn;
}
Run Code Online (Sandbox Code Playgroud)
来自文档:
我们可以通过使回调函数返回false来在特定迭代中中断$ .each()循环.返回非false与for循环中的continue语句相同; 它将立即跳到下一次迭代.