I have the following HTML in a JSP file:
<div class="custList"> <table class="dataGrid"> <c:forEach var="cust" items="${custList}"> <tr> <td>${cust.number}</td> <td>${cust.description}</td> <td>${cust.type}</td> <td>${cust.status}</td> </tr> </c:forEach> </table> </div>
I need to be able to trigger a 'click'
event on each of the dynamically created <tr>
tags and also be able to access the values of the <td>
tags (of the clicked <tr>
) from within the JavaScript function. I have this function already, but sadly it doesn't seem to be working.
$(document).ready(function() { $("div.custList > table > tr").live('click', function() { alert("You clicked my <tr>!"); //get <td> element values here!!?? }); });
Update (Jan 2016): jQuery.live is deprecated (as noted here:http://api.jquery.com/live/)
As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers.
var Something = $(this). closest('tr'). find('td:eq(1)'). text();
var t = document. getElementById("table"), d = t. getElementsByTagName("tr"), r = d. getElementsByTagName("td");
each(function() { valuesByRowID[this.id] = $(this). find("> td"). map(function() { // Option 1: Getting the value of the `value` attribute: return this. getAttribute("value"); // or return $(this).
Unless otherwise definied (<tfoot>
, <thead>
), browsers put <tr>
implicitly in a <tbody>
.
You need to put a > tbody
in between > table
and > tr
:
$("div.custList > table > tbody > tr")
Alternatively, you can also be less strict in selecting the rows (the >
denotes the immediate child):
$("div.custList table tr")
That said, you can get the immediate <td>
children there by $(this).children('td')
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With