如何停止传播

How to stop the propagation?

本文关键字:传播 何停止      更新时间:2023-09-26

我有以下代码

$(".btnClose").click(function (e) {
    alert('a');
    e.stopPropagation();
    e.preventDefault();
    var targetUrl = $(this).attr("href");
    $('#modal-a').modal();
    $("#modal-a .btn-danger").click(function () {
        window.location.href = targetUrl;
    });
});

$('.clickable-row').click(function () {
    alert('b');
    var formId = ...;
    var locked = ...
    if (locked == false) {
        document.location = "a/" + formId;
    }
    else {
        document.location = "b/" + formId;
    }
});
<tr class="clickable-row">
    <td><a class="btnClose" href="/c?FormId=40">Close</a></td>
</tr>

问题是,当我点击任何按钮与btnClose类,它提醒'a',显示模态窗口,等待模态窗口的答案。如果我用cancel回答,那么它将显示'b'并进行不希望的重定向。

我看到stop propagation在这种情况下不起作用,我不知道为什么。

有一个简单的方法可以解决这个问题,只需检查目标

$('.clickable-row').click(function (e) {
    if ( $(e.target).hasClass('btnClose') ) return;

    // rest of the code
});