【发布时间】:2017-09-14 12:45:41
【问题描述】:
我在视图中使用引导表,并且表行是动态创建的,并且 创建它们后,我想将 .onclick 事件附加到我的行,以便万一有人单击该行,我可能会突出显示它, 我试了试,不知道怎么解决。
这是我的代码:
1.) 首先,尝试 - 绝对不好,因为一直在我的行上附加事件,点击几下后弹出 5-6-7 警报..
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script>
$('#TableItems').click(function (e) {
$('#TableItems tr').click(function (e) {
alert("Clicked!");
});
});
</script>
2.) 第二次尝试 - 也不好,因为视图已渲染并且 tr 尚未渲染,所以可能无法附加 onclick 事件,因为当我点击它时
什么都没有发生
$('#TableItems tr').click(function (e) {
alert("Damn");
});
这是我的桌子
<div class="table-responsive" id="myTable">
<table class="table table-striped jambo_table bulk_action">
<thead>
<tr class="headings">
<th class="column-title">Title </th>
</tr>
</thead>
<tbody id="TableItems"></tbody>
</table>
</div>
【问题讨论】:
-
您需要event delegation - 例如
$('#TableItems').on('click', 'tr', function() { ... -
@StephenMuecke 你们这些cmets总是很棒的伙伴!很容易认出你知识渊博,很高兴读到你的cmets!再感谢一次!还有一个问题是,对于每个 tr,我生成了 Id = "something" 以及如何从这个 e 对象中获取 Id 值,这是否可能?
-
是的 -
var id = $(this).attr('id');但是你为什么要给tr元素一个id属性(真的没有意义) -
@StephenMuecke 因为在动态生成的表格中我保存了客户列表,每个客户都有一个 Id,通过单击一行我想用其他信息填充另一个表格..跨度>
-
您确实应该为此使用
data-*属性-例如<tr data-customerid="...">(如果使用$(this).data('customerid');访问)
标签: javascript jquery html asp.net-mvc twitter-bootstrap