यहाँ एक सामान्य समारोह आप प्रत्येक यात्रा के बीच देरी से एक jQuery वस्तु के संग्रह के माध्यम से पुनरावृति करने के लिए, का उपयोग कर सकते है:
function delayedEach($els, timeout, callback, continuous) {
var iterator;
iterator = function (index) {
var cur;
if (index >= $els.length) {
if (!continuous) {
return;
}
index = 0;
}
cur = $els[index];
callback.call(cur, index, cur);
setTimeout(function() {
iterator(++index);
}, timeout);
};
iterator(0);
}
डेमो:http://jsfiddle.net/7Ra9K/ (एक बार के माध्यम से लूप)
डेमो:http://jsfiddle.net/42tXp/ (निरंतर लूपिंग)
आपके कॉलबैक में पारित संदर्भ और तर्क समान होना चाहिए कैसे .each()
करता है।
आप, यह एक jQuery प्लगइन बनाने के लिए तो यह $("selector").delayedEach(5000, func...
की तरह कहा जा सकता है चाहते हैं, तो आप इस इस्तेमाल कर सकते हैं:
डेमो
$.fn.delayedEach = function (timeout, callback, continuous) {
var $els, iterator;
$els = this;
iterator = function (index) {
var cur;
if (index >= $els.length) {
if (!continuous) {
return;
}
index = 0;
}
cur = $els[index];
callback.call(cur, index, cur);
setTimeout(function() {
iterator(++index);
}, timeout);
};
iterator(0);
};
: (एक बार के माध्यम से लूप)http://jsfiddle.net/VGH25/
डेमो:http://jsfiddle.net/NYdp7/ (निरंतर पाशन)
अद्यतन
मैं एक अतिरिक्त पैरामीटर के रूप में तत्वों के माध्यम से क्षमता लगातार करने के लिए लूप कहा,। true
पासिंग false
या कुछ भी नहीं (या कुछ झूठी) गुजरते समय निरंतर लूप होगा, केवल एक बार तत्वों पर लूप होगा। कोड और पहेलियों में परिवर्तन शामिल हैं।
http://stackoverflow.com/a/14786792/2256325 – Sergio
आप '.each()' (कम से कम ठीक से) का उपयोग करने में सक्षम नहीं होंगे। – Ian