我在html中有以下代码:
<table class="table table-striped">
<thead class="inner">
<tr>
<th>Name</th>
<th>Parent</th>
<th>Priority</th>
<th>Action</th>
</tr>
</thead>
<tbody id="check">
<tr>
<td><a href="">test</a></td>
<td>null</td>
<td>0</td>
<td>
<button value="3" type="button" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
<tr>
<td><a href="">Lifestyle</a></td>
<td>null</td>
<td>1</td>
<td>
<button value="2" type="button" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
<tr>
<td><a href="">Travel</a></td>
<td>null</td>
<td>1</td>
<td>
<button value="1" type="button" class="btn btn-danger btn-sm"><i class="fa fa-trash-o"></i></button>
</td>
</tr>
</tbody>
我在页脚中有以下代码:
$("#check tr td button").click(function () {
alert('here');
});
但是该事件似乎无法正常进行。为什么我的代码不起作用?表中的数据是在ajax调用之后创建的。是因为Ajax吗?
答案 0 :(得分:1)
在元素DOM
中存在元素之前注册该事件,这就是为什么不触发该功能的原因。解决方案是在ajax
之后定义代码,或使用如下的事件委托
$(document).ready(function() {
$(document).on("click", "#check tr td button", function() {
alert('here');
});
});
答案 1 :(得分:0)
记住绑定事件时,也许那时DOM中不存在对象 $(“#check tr td button”)!
因此,解决方案是ajax完成后的bind事件。
将您的代码放入ajax的成功方法中
$.ajax({
url: 'url',
data: [],
success: function() {
// render table code
// bind event here
$("#check tr td button").click(function () {
alert('here');
});
}
});
或者您可以使用文档的事件点击。
$(document).on("click", "#check tr td button", function() {
// do something you want here
});
答案 2 :(得分:0)
尝试一下:
$(document).on("click", "#check tr td button", function() {
alert('here');
});
OR
$(document).ready(function() {
$(document).on("click", "#check tr td button", function() {
alert('here');
});
});