2011-09-10 4 views
2

Je génère des champs de texte en utilisant jquery. Et j'utilise jquery ui pour styliser le formulaire. Mon problème est que les éléments générés dynamiquement, ne soit pas le css de jquery ui:Comment appliquer le style jquery ui aux éléments générés dynamiquement

var index = 0; 
    $('#btn_generate').live('click', function(){ 
       var tr = $("<tr>").appendTo('#tbl_body'); 
       var td = $("<td>").appendTo(tr); 
       var txt = $("<label>").attr({'for' : index}).appendTo(td).html('content' + index + ':').css({'color' : 'white'}); 
       $("<input>").attr({'type' : 'text', 'name' : 'field[]', 'id' : index}).appendTo(td); 
       index++; 
      }); 

Comment puis-je résoudre celui-ci?

Répondre

2

Je devine que vous obtenez jQuery pour le style de la forme initialement sur le document prêt?

Si oui, vous avez deux options ...

  1. Relancez votre initiale jQuery chaque fois que vous générer des éléments de formulaire supplémentaires
  2. ajouter manuellement les classes nécessaires pour jQuery ui chaque nouvel objet. (.addClass devrait fonctionner au mieux l'OMI)

Si je suis aboyer le mauvais arbre laissez-moi savoir :)

+0

essayé ce que vous avez dit, appelé la fonction d'accordéon(). Ajoutez ensuite une classe à chaque nouveau champ de texte: \t $ ("") .attr ({'type': 'texte', 'nom': 'champ []', 'id': index}). AppendTo (td) .addClass ('ui-widget'); mais ça n'a pas marché –

1

vous pouvez essayer quelque chose comme ceci:

var index = 0; 
$('#btn_generate').live('click', function(){ 
      var tr = $("<tr>").appendTo('#tbl_body'); 
      var td = $("<td>").appendTo(tr); 
      var txt = $("<label>").attr({'for' : index}).appendTo(td).html('content' + index + ':').css({'color' : 'white'}); 
      $("<input>").attr({'type' : 'text', 'name' : 'field[]', 'id' : index}).appendTo(td); 

//as you have given id=index to your input 
    $('#'+index).yourjqueryuifunction(); 
      index++; 
     }); 
Questions connexes