كيفية تخطي إلى التكرار التالي في jQuery.each) UTIL (؟

StackOverflow https://stackoverflow.com/questions/481601

  •  20-08-2019
  •  | 
  •  

سؤال

وأنا أحاول أن تكرار خلال مجموعة من العناصر. وتقول وثائق مسج على:

jquery.Each () وثائق

<اقتباس فقرة>   

وزيارات غير كاذبة هو نفس تستمر بيان في لحلقة، فإنه سيتم تخطي فورا إلى التكرار التالي.

ولقد حاولت استدعاء 'العودة غير كاذبة؛ " و"غير صحيحة." (العودة بلا) لا هذا ولا ذاك الذي انتقل إلى التكرار التالي. بدلا من ذلك، فإنها كسر حلقة. ما أنا في عداد المفقودين؟

هل كانت مفيدة؟

المحلول

وماذا يقصدون غير صحيحة هو:

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}
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top