我想更改系统中的用户状态。在更改状态之前我需要显示确认框。所以我为它添加bootstrap模型,如下所示。
HTML
<tbody>
<tr>
<td>Dinuka Perera</td>
<td>User is active</td>
<td><a href="javascript:void(0)" class="inactive">Activate</a></td>
</tr>
<tr>
<td>Thilanga Perera</td>
<td>User is inactive</td>
<td><a href="javascript:void(0)" class="active">Dectivate</a></td>
</tr>
<tr>
<td>Test Perera</td>
<td>User is active</td>
<td><a href="javascript:void(0)" class="inactive">Activate</a></td>
</tr>
</tbody>
JS
$(document).on('click','.active', function () {
var $this = $(this);
$('#status-model').modal();
$('.alert').remove();
$('#change-btn').click(function() {
var id = $this.parents('tr').data('id');
$.post('users/status', {id:id, status:0}, function( data ) {
var obj = $.parseJSON(data);
if (obj.success != undefined) {
$this.html('Activate');
$this.removeClass('active');
$this.addClass('inactive');
$this.parents('tr').find('.status').html('User is inactive');
$('#search-form').before('<div class="alert alert-success">User activation successful</div>');
$('#status-model').modal('hide');
}
});
});
});
$(document).on('click','.inactive', function () {
var $this = $(this);
$('#status-model').modal();
$('.alert').remove();
$('#change-btn').click(function() {
var id = $this.parents('tr').data('id');
$.post('users/status', {id:id, status:1}, function( data ) {
var obj = $.parseJSON(data);
if (obj.success != undefined) {
$this.html('Deactivate');
$this.removeClass('inactive');
$this.addClass('active');
$this.parents('tr').find('.status').html('User is active');
$('#search-form').before('<div class="alert alert-success">User deactivation successful</div>');
$('#status-model').modal('hide');
}
});
});
});
这是第一次工作。之后它会发送多个ajax请求。在我添加这个模型之前它是成功的。有什么问题?
答案 0 :(得分:1)
当您单击.active或.inactive对象时,它会将事件绑定到&#34; #change-btn&#34;宾语。因此,每个绑定的点击事件都会向服务器发送另一个ajax请求。因此,您必须在绑定之前删除所有单击事件。你可以这样做;
$( "#change-btn").unbind( "click" );
$('#change-btn').click(function() {
...
});