【问题标题】:javascript window confirm pops up several timesjavascript窗口确认弹出几次
【发布时间】:2015-10-12 09:06:30
【问题描述】:

我正在尝试使用确认方法,但由于某种原因,确认窗口会弹出几次。我用谷歌搜索并尝试了不同的东西,但不幸的是我无法让它正常运行。代码如下:

//user clicks on the delete button
$("#deletePopUpImage").click(function(){

        console.log("deletePopUpimageCalled");

        //get the id of the image
        id = ($(this).parent().prop("id"));

        //create the ajax request
        data = "typ=function&functionType=deleteUserImage&id="+id;

        //open the confirm box
        var r = confirm("Are you sure that you want to delete this image?");
        if (r == true) {
            console.log("loadAjaxCAlled");

            //Ajax call
            loadAjax(data);

            //hide the image and the loader
            hideImagePopup();
        } else {
            //do nothing
        }  
    });

奇怪的是,有时确认窗口会弹出两次,有时会弹出三次,有时会按预期弹出一次。这就是插入两个 console.logs 的原因。

“deletePopUpimageCalled”总是只出现一次。但是“loadAjaxCALled”出现了好几次。

在 Ajax 请求的成功回调中,我只是隐藏了缩略图 div。

你知道我上面的代码有什么问题吗?

谢谢 斯蒂芬

【问题讨论】:

  • 您可能不小心点击了图片twicethrice。禁用点击您的first click 并检查结果
  • 你试过在回调中调用ajax方法吗?
  • @RajeevKumar 我将如何禁用点击事件?通过添加通过 jquery 禁用的属性?

标签: javascript confirm


【解决方案1】:

可能是附加事件的代码:

$("#deletePopUpImage").click(function(){...});

被多次调用。每次调用 .click(...) 都会创建一个新的处理程序,该处理程序会在单击按钮时触发。

一些浏览器将相同的条目堆叠在一起(因此日志不会扩展得这么快),这可能是您没有多次看到“deletePopUpimageCalled”的原因。 最好通过在浏览器中调试来检查。

【讨论】:

  • 这意味着几个“deletePopUpImageCalled”。
  • @Quentin Roy - 一些浏览器将相同的条目堆叠起来,因此您只有一个条目
  • 公平点。尽管通常您确实会在控制台条目的左侧以数字的形式看到它被接收的次数。还有,既然如此,他为什么会得到几个“loadAjaxCALled”?
  • 您好,感谢您的 cmets!我同意罗伊的观点。为什么有几个loadAjaxCALled 但只有一个deletePopUpimageCalled。这意味着我眼中只有​​一个点击事件。肯定只有一个 loadAjaxCalled!我很困惑^^
  • 好的,如果你改变 "console.log("deletePopUpimageCalled");"进入警报(“deletePopUpimageCalled2”);? JS 是同步的,我不希望 confirm() 方法有任何奇怪的行为。
【解决方案2】:

好的,我发现了问题。在 Ajax 成功处理程序中,我将已删除的图像的 div 设置为 display:none 而不是删除它。因此 divIds 可能会出现两次,三次等。更改代码删除后,它工作顺利。

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2012-02-20
    • 1970-01-01
    • 2011-03-24
    • 2011-10-19
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多