在Bootstrap模式中使用jQuery $(this)来引用模态目标

时间:2018-01-24 20:15:06

标签: jquery html bootstrap-modal

我有一个动态数量的按钮,其中包含.btn-trash.类我使用$(this)根据它在dom中的位置点击任意按钮执行一些代码。我想修改它以在单击相同按钮时打开Bootstrap确认模式窗口,并在确认此模式时执行相同的代码。我不能再使用$(this),因为我不在.btn-trash在dom中的位置,而是在我的模态中的新确认按钮的上下文中。我现在很难弄清楚哪个.btn-trash被点击了,以便执行我的逻辑。有没有办法做到这一点?谢谢。

标记:

<button class="btn btn-primary btnblue btn-trash" data-toggle="modal" data-target="#delete-modal">
    <span class="glyphicon icon-trash"></span>
</button>

<div class="modal fade" id="delete-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="myModalLabel">Are you sure?</h4>
            </div>
            <div class="modal-body">
                <p>text</p>
            </div>
            <div class="modal-footer text-left">
                <a class="btn btn-secondary btn-delete-plan" data-dismiss="modal">Ok</a>
                <a class="btn btn-default" data-dismiss="modal">Cancel</a>
            </div>
        </div>
    </div>
</div>

脚本:

$(document).on('click', '.btn-trash', function () {
    //moved initial logic from here to '.btn-delete-plan' click
});

$(document).on('click', '.btn-delete-plan', function () {
    //target the '.btn-trash' that was initially clicked and execute code
    //based on its position in the dom
});

1 个答案:

答案 0 :(得分:1)

正如@Jasen所说,只需在.btn-trash点击处理程序中保存一个引用。

var $lastClicked; 
$(document).on('click', '.btn-trash', function () {
    $lastClicked = $(this);
});

$(document).on('click', '.btn-delete-plan', function () {
    //use $lastClicked
});