jquery问题与$(document).on删除变量

时间:2018-04-07 03:48:40

标签: javascript php jquery document

我有这个代码与(doc on)它工作在告诉div重新加载后重新加载按钮不起作用。有了(doc on)事件会触发,但会删除变量吗?

 $(document).on(".status").click(function (event) {
    event.preventDefault();
    var ids = $(this).attr("data-id-status");
    var status = $(this).attr("data-status");
    var record = this;
    $(record).attr('class', 'btn btn-danger big-bnt prams');
    $(record).prop('disabled', true);
    $(record).html('Precessing');
    $.ajax({
        url: 'ajax.php',
        type: 'post',
        data: {action: 'status', id: ids, status: status},
        success: function (data, status) {
            alert(data);
            if (data == '0') {
                $('#flag-view').fadeOut(800, function () {
                    $("#r" + ids).remove();
                    $('#flag-view').fadeIn().delay(2000);
                });
            }
            else if (data == '2') {

            }
            else if (data == '3') {

            }
        },
        error: function (xhr, desc, err) {
            console.log(xhr);
            console.log("Details: " + desc + "\nError:" + err);
        }
    }); // end ajax call
})

2 个答案:

答案 0 :(得分:2)

您的声明是不正确的更改

$(document).on(".status").click(function (event) {

$(document).on("click", ".status", function(event){
}); 

答案 1 :(得分:1)

这不是.on()的工作方式。

.on()是一个辅助函数,用于向元素(带有可选的选择器)添加事件处理程序,如下所示:

$(document).on("click", ".status", function (event) {
    // Do your stuff here
});

这样做(提供选择器)使其成为委托处理程序。只有一个事件处理程序被添加到document,任何冒泡的事件都将被捕获并提供给回调函数。

您还可以将事件处理程序直接添加到元素(或元素集合),如下所示:

$(document).find(".status").on("click", function (event) {
    // ...
});

如果删除了处理程序添加到的.status元素,则处理程序也将被删除。

jQuery中的事件处理起初可能有点令人困惑,但它很合乎逻辑。我建议你read up on it更好地了解它是如何工作的。