Adding rows to tbody of a table using jQuery
I am trying to add rows to the tbody
of a table. But I am having issues with achieving that. Firstly, the function where everything takes place is called on change of a dropdown from a html page. I created a tr
string containing all the td
inside that containing the html elements, text and other stuff. But when I am trying to add that generated row to the table using:
$(newRowContent).appendTo("#tblEntAttributes tbody");
I am encountering an error. The name of the table is tblEntAttributes
and I am trying to add it to the tbody
.
Actually what's happening is jQuery is unable to get tblEntAttributes
as an html element. But I can access it using documemt.getElementById("tblEntAttributes");
Is there any way I can achieve this by adding rows to the tbody
of the table. Maybe a bypass or something.
Here's the entire code:
var newRowContent = "<tr><td><input type=\"checkbox\" id=\"" + chkboxId + "\" value=\"" + chkboxValue + "\"></td><td>" + displayName + "</td><td>" + logicalName + "</td><td>" + dataType + "</td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td><td><input type=\"checkbox\" id=\"chkAllPrimaryAttrs\" name=\"chkAllPrimaryAttrs\" value=\"chkAllPrimaryAttrs\"></td></tr>";
$("#tblEntAttributes tbody").append(newRowContent);
One thing I forgot to mention is the function where this code is written is actually the success callback function for a ajax call. I am able to access the table using document.getElementById("tblEntAttributes")
but for some reason $(#tblEntAttributes)
doesn't seem to work.
("#tblEntAttributes tbody")
needs to be
$("#tblEntAttributes tbody")
.
You are not selecting the element with the correct syntax
Here's an example of both
$(newRowContent).appendTo($("#tblEntAttributes"));
and
$("#tblEntAttributes tbody").append(newRowContent);
working http://jsfiddle.net/xW4NZ/
use this
$("#tblEntAttributes tbody").append(newRowContent);
I have never ever come across such a strange problem like this! o.O
Do you know what the problem was? $ isn't working. I tried the same code with jQuery like jQuery("#tblEntAttributes tbody").append(newRowContent);
and it works like a charm!
No idea why this strange problem occurs!
Here is an appendTo version using the html dropdown you mentioned. It inserts another row on "change".
$('#dropdown').on( 'change', function(e) {
$('#table').append('<tr><td>COL1</td><td>COL2</td></tr>');
});
With an example for you to play with. Best of luck!
http://jsfiddle.net/xtHaF/12/
As @wirey said appendTo
should work, if not then you can try this:
$("#tblEntAttributes tbody").append(newRowContent);