javascript
  • jquery
  • 2010-09-03 7 views 4 likes 
    4

    J'ajoute un nouvel élément par html() fonction de jQuery. Ensuite, je veux le manipuler. Est-il possible de faire cela comme vous le voyez ici?Gestion des éléments après innerHTML ou html(). Javascript

    $("#renamePlaylist").click(function(){ 
        var aa = '<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
           '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'; 
        $("#playlist_header").find('span').html(aa);     
    }); 
    
    $("#renameCurrent").click(function(){ 
        alert('hello') 
    }); 
    
    +0

    Avez-vous déjà essayé? –

    +0

    Yep :) ne fonctionne pas ... :( – Pol

    Répondre

    1

    Vous pouvez utiliser .live(), comme ceci:

    $("#renameCurrent").live('click', function(){ 
        alert('hello') 
    }); 
    

    Ou, exécutez la liaison après l'avoir créé, comme ceci:

    $("#renamePlaylist").click(function(){ 
        var aa = '<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
          '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'; 
        $("#playlist_header").find('span').html(aa); 
        $("#renameCurrent").click(function(){ alert('hello'); }); 
    }); 
    
    1

    Vous pouvez utiliser .delegate() pour gérer des éléments sont ajoutés dynamiquement au conteneur #playlist_header.

    $("#playlist_header").delegate('#renameCurrent', 'click', function(){ 
        alert('hello'); 
    }); 
    

    Ou tout simplement ajouter le gestionnaire .click() lorsque vous créez l'élément.

    $("#renamePlaylist").click(function(){ 
        var $aa = $('<input type="text" name="plst_name" value="'+$("#playlist_header").find("span").text()+'" size="'+Math.round($("#playlist_header").find("span").text().length/2)+'">'+ 
          '<input id="renameCurrent" type="image" name="+" value="submit" alt="+">'); 
        $aa.filter('#renameCurrent').click(function() { 
          alert('hello'); 
        }); 
        $("#playlist_header span").html($aa); // Edit from @Nick's comment.   
    }); 
    
    +0

    La deuxième version ajouterait un clic à un élément supplémentaire :) Aussi juste comme un conseil, '.html ($ aa)' est un raccourci;) –

    +0

    @Nick - Indeed ça le ferait. Fixé. : o) Bien que, je pensais '.html ($ aa)' se traduirait par '[objet objet]'. EDIT: Non, j'avais tort. – user113716

    Questions connexes