2009-10-05 8 views
0

Comment puis-je accéder aux objets (divs) générés dynamiquement? Je veux dire DIVS qui n'étaient pas présents dans la sortie lorsque $(document).ready(function() a démarré.JQuery accède aux objets créés dynamiquement

Si je fais:

$('#click_me').click(function() { 
    $('#container').append('<div id="clicker2">can you click on me?</div>'); 
}); 

$('#clicker2').click(function() { 
    alert('hurray, it works'); 
}); 

le clicker2 ne travaillerai pas

Comment puis-je résoudre ce problème? J'ai l'intention d'en créer plus d'un dynamiquement. et je veux assigner des actions Jquery à eux aussi.

Répondre

3

.cliquez() fonctions qui ne fonctionnent pas sur les travées ou divs qui sont ajoutés plus tard, vous devrez utiliser .live()

$("#clicker2").live("click", function(){ 
    # do stuff to spans currently existing 
    # and those that will exist in the future 
}); 
+0

+1 Je ne savais pas en direct(). Ça a l'air de bien marcher! –

+0

bien mes actions se dupliquent aussi bien !!!! :( lorsque je fais APPEND et ensuite assigner une action la prochaine fois que je fais ajouter et assing action lorsque l'action est allumée .. il fonctionne deux fois –

0

Il suffit de mettre le clic de liaison dans la première fonction de clic:

$('#click_me').click(function() 
{ 
    $('#container').append('<div id="clicker2">can you click on me?</div>'); 
    $('#clicker2').click(function(){ alert('hurray, it works'); }); 
}); 

Comme vous l'avez, la liaison est appelée, mais il n'y a pas « div # clicker2 » pour se lier à la seconde fonction.

Espérons que cela aide.

1

Créez l'explicitation div et assemblez ses attributs et événements avant de l'ajouter.

var $div = $('<div />').append('can you click on me?').attr('id', 'clicker2').click(function() { 
alert('hurray, it works'); 
}); 
$('#container').append($div); 
Questions connexes