从生成的html表中选择一行
Select a row from a generated html table
在这个堆栈中,有一个使用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');
});
这是事件委托模式的完美用例。也就是说,您可以在父元素(表)上定义单击回调,而不是在每个元素上定义回调(在您的例子中,每个表行)。
这样,当一个点击事件发生时,它就会弹出dom树,并且父元素可以响应它。
的例子:
// Attach a delegated event handler
$( "#table" ).on( "click", "tr", function( event ) {
event.preventDefault();
...
});
这允许我们为所有当前和未来的表行附加单个单击事件处理程序。
相关文章:
- 如何在Angular UI网格中选择下一行
- 允许为显示的每个数据表选择一行
- 使用下拉选择菜单高亮显示一行表格单元格
- 从 html 表中选择一行(突出显示)并在单击按钮时发送值
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 更改多个文本框并选择从一行检索到另一行的数据
- 如何添加“;选择“;当一行被单击时,类仅限于表的一行
- 我已经创建了一个动态的下拉选择列表,它指向一行;如何使该行成为变量
- 选择并高亮显示一行中的单元格
- 禁用“基于同一行上的另一个元素进行选择”
- 在同一行中对齐选择、输入、提交而不向下
- koGrid-如何用程序选择一行
- 从数据表中选择一行以显示单选按钮值
- 仅获取具体化选择中的最后一行
- 在 CSS 中有一个单独的伪选择器,以显示有关一行中多个元素的信息
- 在 jqxGrid 中按一个单元格的值选择一行
- 如何向 Javascript 表添加一行,其中包含包含 jQuery 中的日期选择器函数的单元格
- 选择/突出显示行并更改同一行中突出显示的文本字段的值
- 如何在文本区域中选择(一行或多行)
- 如何知道哪一行选择了哪个单选按钮 ID