【问题标题】:How to listen for when sweet alert closes如何在甜蜜警报关闭时收听
【发布时间】:2017-10-09 05:42:29
【问题描述】:

我目前正在使用 sweetalert2,我正在尝试检测警报何时关闭。但是 DeleteUnsavedImages 函数没有触发。我认为将功能分配给 onclose 键会起作用,但没有运气。

   swal({
       html: data,
       showCloseButton: false,
       showCancelButton: false,
       width: 800,
       showConfirmButton: false,
       onClose: DeleteUnsavedImages()
   }).then(function () {

   });


function DeleteUnsavedImages(){
    var test = "-1";
}

任何帮助将不胜感激:-)

【问题讨论】:

  • 尝试删除 (), onClose: DeleteUnsavedImages
  • 成功了!谢谢。
  • 哦,@BoyWithSilverWings 在 cmets 中给出了解决方案。酷...

标签: javascript jquery sweetalert sweetalert2


【解决方案1】:

我用我的甜蜜警报进行了测试以确认问题,您只需传递不带() 的函数名称,该函数将在swal 的onClose 事件处理程序中调用。当onClose 被 swal 触发时,它被称为传递要调用的函数的引用。

像这样做一点改变:

   swal({
       html: data,
       showCloseButton: false,
       showCancelButton: false,
       width: 800,
       showConfirmButton: false,
       onClose: DeleteUnsavedImages        // Removed () from here
   }).then(function () {

   });


   function DeleteUnsavedImages(){
       var test = "-1";
   }

【讨论】:

  • 你没有调用函数DeleteUnsavedImages。您正在提供对函数的引用,然后在警报关闭时调用该函数。
  • 是的,当onClose 被swal 触发时,它被称为传递要调用的函数的引用。
  • 是的,我知道。但是你的回答是:你只需要在没有()的情况下调用函数,这是不正确的。您没有调用该函数。您正在传递对函数的引用。
  • 将在回答中更新我的评论,以便使概念清晰。感谢@fubar 提及它。
  • 使用“then(..)”语句代替 onClose 属性还不够吗?
【解决方案2】:
swal({
     html: data,
     showCloseButton: false,
     showCancelButton: false,
     width: 800,
     showConfirmButton: false,
     onClose: () => {
         this.DeleteUnsavedImages();
     }
})

private DeleteUnsavedImages(){
}

【讨论】:

    【解决方案3】:
    swal({
        title: "client",
        content: html,
        buttons:
        {
            cancel: {
                text: "Close",
                visible: true,
                closeModal: true,
            },
            confirm: {
                text: "Download",
                visible: true,
                closeModal: false
            }
        },
    }).then((confirm) => {
        if (confirm) {
            download();
        }
        else {
            DeleteUnsavedImages();
        }
    });
    
    function DeleteUnsavedImages(){
        var test = "-1";
    }
    

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。
    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多