2009-09-08 10 views
2

J'ai une boîte d'entrée créé par jquery comme ceci:jquery html() ne fonctionne pas

val input = $('<input class="pick_date" ... />') 

mais la méthode .html() sur l'entrée ne retourne pas la chaîne entrée dans le $. Quelqu'un sait-il pourquoi?

éditer: Ah, je comprends le problème. Y a-t-il un moyen d'obtenir la représentation html de la boîte de saisie entière et pas seulement l'entrée?

+0

trouvé ma nouvelle réponse – Ropstah

Répondre

4

vous passez <input /> qui est une balise de fermeture auto.

Si vous passez <input>Html here</input> (ce qui est XML valide, mais pas à ma connaissance HTML), vous pouvez récupérer la partie "Html ici" avec la fonction .html() comme ceci:

var input = $('<input class="pick_date">Html here</input>'); 
alert(input.html()); 

En plus de votre question éditée:

$('<input />').outerHtml(); 

cela devrait fonctionner .. :)

avec ce ofcourse (source):

(function($) { 
    $.fn.outerHTML = function() { 
     return $('<div>').append(this.eq(0).clone()).html(); 
    }; 
})(jQuery) 
+0

voir mis à jour answer – Ropstah

+2

Est-ce que outerHtml n'est pas un plugin (ou IE uniquement)? Ça ne fait pas partie de jquery. – seth

+0

vrai, j'ai oublié de coller le code qui en fait un plugin jQuery :) – Ropstah

0

Je pense que peut-être vous cherchez append():

$("div#form").append('<input class="pick_date" ... />'); 
+0

voudrez peut-être lire en plus ceci: http://stackoverflow.com/questions/268490/jquery-document-createelement-equivalent – pifantastic

0

juste dû faire face à ce problème.

Si vous utilisez ASP.NET, il pourrait être parce que ASP.NET change les noms d'identification, si vous ajoutez "runat =" server »

Ainsi, au lieu de le faire.

<td id="mytd" runat="server"></td> 
$('#mytd').html() 

Essayez de faire ceci:

<td id="mytd" class="myclass" runat="server"></td> 
$('.myclass').html()