2009-06-24 5 views
0

J'ai le code suivantComment puis-je envelopper un élément avec un élément généré dynamiquement en utilisant jQuery?

var input = $('#el_id'); 
wrapper = $(document.createElement('div')); 
wrapper.addClass('small'); 
wrapper.css('width',200); 
input.wrap(wrapper); 

alert(input.children().length) 

Je reçois 0 pour la longueur des enfants. Ce que je veux est:

<div class="small" style="width: 200px;"> 
    <input type="text" id="el_id" /> 
</div> 

Mais je veux que la petite div soit générée dynamiquement. Une idée de pourquoi cela ne fonctionne pas?

MISE À JOUR

Il se trouve mon problème se trouve sur une autre ligne de code. Je veux assigner l'enveloppe à une variable après que j'emballe et:

block = input.wrap("<div class='"+container_class+"' style='width: "+wrap_width+"px;'></div>"); 

ne fonctionne pas. Il renvoie l'entrée qui a du sens. Mais comment puis-je retourner l'emballage?

Merci!

Répondre

2

Je crois que vous le faites bien.

Vous avez juste besoin d'enregistrer les résultats de la fonction d'enveloppe à une variable:

Edit: Mise à jour le code pour obtenir parent():

var wrapped = input.wrap(wrapper).parent(); 
alert(wrapped.children().length); 
+0

la chose me vissage est « enveloppé » dans votre exemple ne retourne pas les mêmes résultats que si je devais simplement saisir l'élément d'emballage avec $ (« # wrapper_id »). Savez-vous pourquoi? – Tony

+0

- Whoops je pensais wrap() a renvoyé le nouveau contexte - désolé. Vous pouvez tout simplement faire: input.wrap ("..."); var enveloppé = input.parent(); –

0

De l'documentation, il semble que wrap() accepte seulement un élément DOM ou une chaîne. Vous lui passez un objet jQuery, qui peut ne pas fonctionner. Je voudrais essayer ceci:

$('#el_id').wrap('<div class="small" style="width: 200px;"></div>'); 
0

simple. Vous essayez d'envelopper un objet jquery et non un objet dom qui est ce que la fonction enveloppe() attend.

Questions connexes