【发布时间】:2015-09-20 11:05:22
【问题描述】:
在stack 中,有一个解决方案可以使用 jQuery 从表中选择并突出显示整行。当我单击表格上的一行时,我有一个回调(请参阅我的脚本底部)。 问题是我的表是从数据生成的,因此回调不适用于生成的单元格。回调适用于未生成的标头。
如何将现有的回调附加到新生成的元素上?
<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()... 更改为:jQuery("#table tr").on('click', function( )..
-
@ItayB 完全一样。
-
@epascarello 委托事件的优点是它们可以处理来自以后添加到文档的后代元素的事件。来自:api.jquery.com/on
-
@ItayB 我知道什么是委托事件,而你的不是委托事件。
-
@aless80 或使用委托事件,您不必这样做。
标签: javascript jquery html