كيفية تخطي إلى التكرار التالي في jQuery.each) UTIL (؟
-
20-08-2019 - |
سؤال
وأنا أحاول أن تكرار خلال مجموعة من العناصر. وتقول وثائق مسج على:
<اقتباس فقرة>وزيارات غير كاذبة هو نفس تستمر بيان في لحلقة، فإنه سيتم تخطي فورا إلى التكرار التالي.
اقتباس فقرة>ولقد حاولت استدعاء 'العودة غير كاذبة؛ " و"غير صحيحة." (العودة بلا) لا هذا ولا ذاك الذي انتقل إلى التكرار التالي. بدلا من ذلك، فإنها كسر حلقة. ما أنا في عداد المفقودين؟
المحلول
وماذا يقصدون غير صحيحة هو:
return true;
وحتى هذا الرمز:
var arr = [ "one", "two", "three", "four", "five" ];
$.each(arr, function(i) {
if(arr[i] == 'three') {
return true;
}
alert(arr[i]);
});
هل تنبيه واحد، اثنان، أربعة، خمسة
نصائح أخرى
وبواسطة "العودة غير صحيحة"، إلا أنها تعني العودة إلى أي قيمة من شأنه أن ينجح في مسعاه إلى قيمة المنطقية خاطئة. لذلك يمكن أن يعود true
، 1
، 'non-false'
، أو أي شيء آخر يمكن ان يخطر لك حتى.
وجافا سكريبت نوع من لديه فكرة 'truthiness "و" falsiness. إذا متغير يحتوي على قيمة ذلك الحين، 9AS عموما سترى) لديها "truthiness" - باطل، أو لا قيمة يميل إلى 'falsiness. قصاصات أدناه قد تساعد:
var temp1;
if ( temp1 )... // false
var temp2 = true;
if ( temp2 )... // true
var temp3 = "";
if ( temp3 ).... // false
var temp4 = "hello world";
if ( temp4 )... // true
ونأمل أن يساعد؟
وأيضا، قيمته التحقق من أشرطة الفيديو هذه من دوغلاس كروكفورد
تحديث: بفضلcphpython لاكتشاف كسر الروابط - لقد المحدثة إلى النقطة الإصدارات تعمل الآن
لا أميل ننسى أنه يمكنك أحيانا فقط تقع قبالة نهاية الكتلة للوصول الى التكرار التالي:
$(".row").each( function() {
if ( ! leaveTheLoop ) {
... do stuff here ...
}
});
وبدلا من العودة فعلا مثل هذا:
$(".row").each( function() {
if ( leaveTheLoop )
return; //go to next iteration in .each()
... do stuff here ...
});
وحلقة <م> فقط م> فواصل إذا كنت إرجاع حرفيا false
. مثال:
// this is how jquery calls your function
// notice hard comparison (===) against false
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
break;
}
وهذا يعني أنه يمكنك العودة أي شيء آخر، بما في ذلك undefined
، وهو ما تعود إذا كنت إرجاع أي شيء، لذلك يمكنك ببساطة استخدام عبارة العودة فارغة:
$.each(collection, function (index, item) {
if (!someTestCondition)
return; // go to next iteration
// otherwise do something
});
ومن الممكن أن هذا قد تختلف من نسخة. هذا ينطبق على مسج 1.12.4. ولكن في الحقيقة، عند الخروج من الجزء السفلي من وظيفة، وكنت ستعود أيضا لا شيء، وهذا هو السبب في استمرار حلقة، لذلك أتوقع أن ليس هناك إمكانية على الإطلاق أن لا شيء عودته يمكن أن <م> لا م> مواصلة عقدة. إلا إذا كانوا يريدون إجبار الجميع لبدء عودته شيء للحفاظ على حلقة ذاهب، لا شيء يعود <م> لديه م> أن تكون وسيلة للحفاظ عليها.
jQuery.noop () يمكن أن تساعد
$(".row").each( function() {
if (skipIteration) {
$.noop()
}
else{doSomething}
});