Sposób, w jaki to robisz, polega na wyszukiwaniu elementów wewnątrz przekazanych elementów. Zasadniczo równoważny wykonaniu .find()
.
To, czego potrzebujesz, to filter()
, które będzie filtrować elementy najwyższego poziomu w kolekcji, którą przekazałeś.
przetestować go tutaj:http://jsfiddle.net/u5uDg/
var mystring = '<div> bleh content </div> <div> bleh content </div>';
$(mystring).filter('div').each(function(e) {
alert('do something');
});
Jeśli chciał wykorzystać swoje podejście, trzeba by dać div
elementy rodzica, na których można wykonać jQuery znaleźć.
http://jsfiddle.net/u5uDg/1/
// Added parent <div> element
var mystring = '<div><div> bleh content </div> <div> bleh content </div></div>';
$('div', mystring).each(function(e) {
alert('do something');
});
Zgodnie z wnioskiem w swoim komentarzu, można opóźnić wykonanie kodu w .each()
wykorzystaniem setTimeout()
i przybywających na czas trwania każdego mnożąc bieżący numer iteracji przez liczbę milisekundy, które chcesz opóźnić.
http://jsfiddle.net/u5uDg/6/
var mystring = '<div> bleh content </div> <div> bleh content </div>';
// Get the length
var length = $(mystring).filter('div').length;
$(mystring).filter('div').each(function(e) {
// setTimeout is used to delay code from executing.
// Here we multiply e (which is the index of the current
// iteration) by 2000 milliseconds, so each iteration
// is delayed by an additional 2000ms
(function(th) {
setTimeout(function() {
alert($(th).text());
if(!--length) { alert('done'); } // alert if done
}, e * 2000);
}(this));
});
Pattrick dzięki tak dużo, jeszcze 1 pytanie w jaki sposób mogę umieścić jak 2-sekundowego opóźnienia tak .delay („200”); na każdym z tych wywołań zwrotnych. Tak więc dla każdego div in mystring, alert ("zrób coś"); co 2 sekundy. – kr1zmo
btw Pattrick dzięki za tę stronę jsFiddle bardzo dziękuję. – kr1zmo
@ kr1zmo użyj setInterval http://www.w3schools.com/jsref/met_win_setinterval.asp – Mark