Nathaniel Flath
Nathaniel Flath

Reputation: 16055

jquery html() not working

I have an input box created by jquery like so:

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

but the .html() method on input does not return the string entered inside the $. does anyone know why?

edit: Ah, I understand the problem. Is there a way to get the html representation of the entire input box and not just the entry?

Upvotes: 3

Views: 15885

Answers (3)

live-love
live-love

Reputation: 52534

Just had to deal with this problem.

If you are using ASP.NET, it could be because ASP.NET changes the id names, if you add "runat="server".

So instead of doing this:

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

Try doing this:

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

Upvotes: 0

Ropstah
Ropstah

Reputation: 17814

you are passing <input /> which is a self-closing tag.

If you were passing <input>Html here</input> (which is valid XML but not HTML to my knowledge), you could retrieve the "Html here" part with the .html() function like so:

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

In addition to your edited question:

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

this should work.. :)

with this ofcourse (source):

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

Upvotes: 5

pifantastic
pifantastic

Reputation: 861

I think maybe you are looking for append():

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

Upvotes: 0

Related Questions