2012-05-25 1 views
1

je code suivant dans document.ready() comme:Ajout d'une classe à l'élément chaque fois qu'un élément est ajouté au DOM

$(document).ready(function(){ 

    $('img').addClass('myClass'); 

}); 

Maintenant, ce code fonctionne très bien si je charges toutes les images à la fois, cette fonction ajoute le myClass à eux (tous les img). Mais ce qui se passe ici est que chaque fois qu'un nouvel élément avec l'étiquette img comme <img...../> est ajouté dans le DOM (via ajax ou javascript), la classe n'est pas ajouté .. est-ce une limitation de JQuery ou il fournit cela via un plugin ou api, ou nous devons le faire manuellement.

Je veux chaque fois qu'un nouveau img est ajouté dans DOM sa classe fixerait à myClass,

PS En ce moment j'ai utilisé setTimeout() comme celui-ci d'appeler une fonction après 2 secondes pour ajouter des classes à mes images comme:

setTimeout(function(){ 
    $('img').addClass('actAsButton'); 
},2000); 

Mais est-ce la bonne façon de faire, en fait ce code aussi fa si nous ADDS NIT tout nouveau dans DOM après 2 secondes, pour cela que je peux utiliser à la place setInterval mais qui est très coûteux en termes de mémoire usage.Please à faire la lumière ..

+3

Non, ce n'est pas la limitation, il est logique de ne rien régler automatiquement pour toute nouvelle balise ajouter dynamiquement. –

+0

Ce n'est pas un homme de limitation, pourquoi voudriez-vous l'aspect automatique pour définir un tag que vous avez ajouté de façon dynamique, c'est génial que vous ayez à définir quand ajouter! +1 @NiftyDude - comment ça se passe? B-) –

+0

Si vous nous montrez comment vous ajoutez de nouveaux éléments IMG au DOM, nous pourrions peut-être vous aider –

Répondre

1
$('img').load(function() { 
    $(this).addClass('actAsButton'); 
}) 
+0

cela aussi ne fonctionne pas .......... :( –

0

Dans votre cas, la addClass ne fonctionne pas car l'élément img n'était pas présent lorsque $(document).ready() a été déclenché. S0, vous devriez utiliser le code suivant pour cela.

$('img').live('load', function() { 
    $('img').addClass('actAsButton'); 
}); 
0
$(document).on('img', 'load', function() { 
    $(this).addClass('actAsButton'); 
}); 
Questions connexes