我有一个使用Bootstrap 3的表,如果用户确认使用Bootbox.js,我想使用每行中的按钮删除一行。
我需要它来删除包含按钮的行。单击按钮时会发出确认消息,但是当我单击"是"该行未被删除。
如果我注释掉Bootbox部分并且只在click()事件上使用$(this).parentsUntil('tbody').remove();
,它会按预期工作,但是一旦取消注释,它就无法正常工作
这是页脚中的JS include和JS
<script src="<?=URL; ?>public/js/bootstrap.min.js"></script>
<script src="<?=URL; ?>public/js/bootbox.min.js"></script>
<script>
$(document).ready(function(){
$(document).on('click', '.complete', function(e) {
//e.preventDefault();
bootbox.confirm("Are you sure want to delete?", function(result) {
if(result) {
$(this).parentsUntil('tbody').remove();
console.log('removed');
}
else {
console.log('not remvoed');
}
});
});
});
</script>
这是表格
<div class="table-responsive">
<table class="table table-hover table-bordered">
<thead>
<tr>
<th>Type</th>
<th>Complete?</th>
</tr>
</thead>
<tbody>
<?php foreach($this->tasks as $task):?>
<tr>
<td><?php echo $task['type']; ?></td>
<td>
<button type="button" class="btn btn-default btn-lg complete">
Default Button
</button>
</td>
</tr>
<?php endforeach?>
</tbody>
</table>
</div>
答案 0 :(得分:2)
这是一个小提琴:http://jsfiddle.net/afP5N/1/
你所拥有的是一个范围问题 - &#39;这个&#39;回调内部与&#39;这个&#39;不同。在点击事件中。
为了简单起见,我制作了bootbox.confirm一个空对象的函数,并添加了一些控制台输出来向你展示这个&#39;这个&#39;变化。
var _this = this; //saves a reference to the original 'this'