2010-08-25 16 views
1

Est-il possible d'ajouter quelque chose à un div déjà ajouté? J'ai essayé, mais rien ne se passe .. (Je ne suis pas en utilisant la ligne dans js réels)jquery ajouter à div déjà ajouté

$(document).ready(function() { 

    $('.add_text_input').click(function() { 
     $('li').append('<div class="input_label">Untitled</div>\ 
         <div class="edit_label"></div>\ 
         <input type="text" name="untitled" /><br />'); 
    }); 

    $('.input_label').click(function() {  
     var input_label = $(this).html(); 
     $(this).hide(); 
     $('.edit_label').append('<input type="text" name="untitled" value="' + input_label + '"/><br />'); 
    }); 

}); 

Js est pour la création d'entrées de texte et de modifier leurs étiquettes. Lorsque vous cliquez sur le div "input_label", il doit masquer en utilisant hide() et ajouter une entrée de texte avec la valeur "sans titre" par défaut dans la variable "edit_label". Cela fonctionne si les divs existent déjà mais je dois le faire fonctionner via append.

Quelqu'un a-t-il des idées s'il vous plaît?

Répondre

1

Vous avez juste besoin d'utiliser un gestionnaire .live() ici, comme ceci:

$('.input_label').live('click', function() { 
    var input_label = $(this).html(); 
    $(this).hide().next('.edit_label') 
    .append('<input type="text" name="untitled" value="' + input_label + '"/><br />'); 
}); 

Cela fonctionne sur des éléments indépendamment du moment où ils sont créés,, ça va marcher car il fonctionne de bullage d'événement sur tout événement click de l'élément qui correspond au sélecteur .input_label.

Actuellement avec .click() il est de trouver tous les éléments qui existent à document.ready temps et lier à ces éléments, pas le sélecteur, il ne fonctionnera pas pour les éléments ajoutés dynamiquement.

+0

Cela fonctionne! Je suis content que c'était simple :) merci! –