在表WITHOUT函数中追加新行后,Jquery添加click事件

时间:2016-04-27 21:36:34

标签: javascript jquery ajax

这是我的问题,我在表格中添加了一个新行。在这一行中有一个按钮,应该是可点击的并触发一个事件。我找到了大量的解决方案,但每个都包含这种方式:

.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删除部分。

但是在实践中我发现了一个简单的解决方案。

希望你们有一个给我......

非常感谢!!!

2 个答案:

答案 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
});

希望这有帮助。

&#13;
&#13;
$('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;
&#13;
&#13;