La forma en que lo haces, estás buscando div
elementos dentro de los elementos pasados. Básicamente equivale a hacer un .find()
.
Lo que quiere es filter()
que filtrará los elementos de nivel superior en la colección que aprobó.
prueba aquí:http://jsfiddle.net/u5uDg/
var mystring = '<div> bleh content </div> <div> bleh content </div>';
$(mystring).filter('div').each(function(e) {
alert('do something');
});
Si desea utilizar su enfoque, que tendría que dar los div
elementos de un padre en la que jQuery puede realizar el hallazgo.
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');
});
lo solicitado en su comentario, puede retrasar la ejecución del código en el .each()
usando setTimeout()
y llegar a la duración de cada multiplicando el número de iteración actual por el número de milisegundos que desea retrasar.
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 muchas gracias, 1 pregunta más ¿cómo puedo poner a como demora de 2 segundos por lo .delay ('200'); en cada una de esas devoluciones de llamada. Entonces, para cada div en mystring, alert ('haz algo'); cada 2 segundos. – kr1zmo
btw Pattrick gracias por ese sitio jsFiddle muchas gracias. – kr1zmo
@ kr1zmo use setInterval http://www.w3schools.com/jsref/met_win_setinterval.asp – Mark