La façon dont vous le faites, vous recherchez div
éléments à l'intérieur des éléments transmis. Fondamentalement équivalent à faire un .find()
.
Ce que vous voulez, c'est filter()
qui va filtrer sur les éléments de niveau supérieur dans la collection que vous avez passé.
test ici:http://jsfiddle.net/u5uDg/
var mystring = '<div> bleh content </div> <div> bleh content </div>';
$(mystring).filter('div').each(function(e) {
alert('do something');
});
Si vous voulez utiliser votre approche, vous devez donner les éléments div
un parent sur lequel jQuery peut effectuer la découverte.
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');
});
Comme demandé dans votre commentaire, vous pouvez retarder l'exécution du code dans le .each()
en utilisant setTimeout()
et d'arriver à la durée de chaque en multipliant le nombre d'itérations en cours par le nombre de millisecondes que vous voulez retarder.
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 merci beaucoup, 1 question de plus comment pourrais-je mettre un délai de 2 secondes comme si .delay ('200'); sur chacun de ces rappels. Donc, pour chaque div dans mystring, alerter («faire quelque chose»); toutes les 2 secondes – kr1zmo
btw Pattrick merci pour ce site jsFiddle merci beaucoup. – kr1zmo
@ kr1zmo utiliser setInterval http://www.w3schools.com/jsref/met_win_setinterval.asp – Mark