确认后,Bootbox不使用remove()删除表行

时间:2014-06-13 15:13:48

标签: jquery twitter-bootstrap-3 html-table bootbox

我有一个使用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>

1 个答案:

答案 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'