В этом stack есть решение выбрать и выделить целую строку из таблицы с помощью jQuery. У меня есть обратный вызов (см. Нижнюю часть моего скрипта), когда я нажимаю строку на таблице. Проблема в том, что моя таблица генерируется из данных, поэтому обратный вызов не работает на сгенерированные ячейки. Обратный вызов работает с заголовками, которые не генерируются.Выберите строку из сгенерированной таблицы html.
Как подключить существующий обратный вызов к вновь созданным элементам?
<style>
.selected {
background-color: brown;
color: #FFF;
}
</style>
<body>
<table id="table" border="1" ContentEditable>
<tbody id="tablebody">
<tr>
<th>Date</th>
<th>Number</th>
</tr>
</tbody>
</table>
<button onclick="generateTable()">generateTable</button>
<script>
function generateTable() {
var tbl = document.getElementById('table')
var tbdy = document.getElementById('tablebody')
//Table elements
var arr={Date: "my date", Number:"my number"}
var tr = document.createElement('tr');
for (el in arr) {
var td = document.createElement('td');
var t = document.createTextNode(arr[el]);
td.appendChild(t);
tr.appendChild(td);
}
//append line to tbody
tbdy.appendChild(tr);
tbl.appendChild(tbdy);
}
jQuery("#table tr").click(function(){
console.log("this works only when clocking on the headers <th>")
jQuery(this).addClass('selected')
.siblings().removeClass('selected');
});
Вы пытались изменить jQuery ("# table tr"). Click (function() ... To: jQuery ("# table tr"). On ('click', function() .. – ItayB
@ ItayB Это точно то же самое. – epascarello
@epascarello Делегированные события имеют то преимущество, что они могут обрабатывать события из потомков, которые добавляются в документ позже. From: http://api.jquery.com/on/ – ItayB