这是我的问题,我在表格中添加了一个新行。在这一行中有一个按钮,应该是可点击的并触发一个事件。我找到了大量的解决方案,但每个都包含这种方式:
.on('click', 'button', function(){
//do something
});
需要一个没有该功能的解决方案 - 在这个地方调用(仅激活点击可能性)。 reasen是,我有三个不同的ajax部分用于添加,编辑和删除表格行。我通过contentEditable表控制它。因此每行都有一个按钮来编辑和删除该行。如果我插入一个新行,新行将获得这些按钮。为了使我的按钮像上面的例子一样运行,我得到一个这样的结构:
// AJAX for edit row
do something
// AJAX for delete row
do something
// AJAX for add row
$('#editTable > tbody:last').append('<tr><td><button>DELETE</button></tr><td>');
$('#table').on('click', 'button', function() {
// AJAX for delete row
do something
});
通过这种方式,我看到了问题,我必须两次编写完整的AJAX删除部分。
理论上听起来很简单,激活删除按钮的点击事件,点击后,将调用AJAX删除部分。
但是在实践中我发现了一个简单的解决方案。
希望你们有一个给我......
非常感谢!!!
答案 0 :(得分:1)
如果您想为动态添加的内容添加点击事件,您应该使用以下代码:
$(document).on('click', 'yourcontent', function (event) {
// ...
});
对于带有class的简单td
元素:
$(document).on('click', 'td.myclass', function (event) {
// ...
});
答案 1 :(得分:1)
为您添加的按钮添加全局类,例如delete
并使用事件委派 on() 为所有按钮添加一个事件,请查看示例。
JS:
$('#editTable > tbody:last').append('<tr><td><button class="delete">DELETE</button></tr><td>');
$('body').on('click', '.delete', function (event) {
//Your code here
});
希望这有帮助。
$('body').on('click', '#add', function (event) {
$('#editTable').append('<tr><td>test<td><td><button class="delete">DELETE</button></tr><td>');
});
$('body').on('click', '.delete', function (event) {
alert("AJAX for delete row");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="add">Add row</button>
<table id="editTable">
<thead>
<th>TEST</th>
<th>Action</th>
</thead>
</table>
&#13;