javascript - 防止$('img').click触发多次

标签 javascript jquery

我想知道如何防止多次提示确认消息,在此先感谢!

JavaScript

$('img.delete').click(function () {         
    if(confirm("This selected record will be deleted. Are you sure?")){
        //Do something...
    }
});

html

<tbody>
    <tr>
        <td><img class="delete" src="/images/delete.gif"><input value="708" type="hidden"></td>
        <td>aaa</td>
    </tr>
    <tr>
        <td><img class="delete" src="/images/delete.gif"><input value="595" type="hidden"></td>
        <td>bbb</td>
    </tr>
    <tr>
        <td><img class="delete" src="/images/delete.gif"><input value="19" type="hidden"></td>
        <td>ccc</td>
    </tr>
</tbody>

最佳答案

您的代码中的问题是您多次应用了点击处理程序;从您发布的代码中看不到这一点,但这绝对是原因。

如果多次运行 $('img.delete').click(fn),它不会覆盖之前的点击处理程序;相反,它添加了另一个处理程序。之后,当 img.delete 被点击时,所有注册的处理程序被连续调用,导致一个弹出窗口紧接着另一个。

应该先调用.unbind()来补救;这样做将有效地用新的点击处理程序替换以前的点击处理程序。

$('img.delete')
    .unbind('click')
    .click(function () {         
        if(confirm("This selected record will be deleted. Are you sure?")){
            //Do something...

            // remove the image here I guess?
        }
    });

但如果您也能找到根本原因,那就更好了。

关于javascript - 防止$('img').click触发多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622202/

相关文章:

javascript - 为什么 jQuery Validate "remote:"验证需要一个函数来设置数据值?

javascript - 如何在单击的某些元素上忽略 Bootgrid 单击事件

javascript - Bootstrap popover 是否复制元素而不是移动它们? (点击处理程序不工作..)

javascript - ReactJS - 用什么代替 JWT 来保持 session

c# - 从 Index.cshtml 以外的 MVC Razor View 调用时,Ajax 调用失败

javascript - 上传之前使用 FileReader javascript 检查图像 MIME 类型

javascript - 如何访问 javascript 中的 laravel .env 变量?

jquery - 如何将值从 Plone 内容架构字段传递到 JQuery 函数?

jquery - $.ajax() 访问 did() 中发送的值

javascript - 如何将元素 ID 变量传递给 jQuery 加载函数