Jquery回调函数执行多次

Jquery callback function executes multiple times

本文关键字:执行 函数 回调 Jquery      更新时间:2023-09-26

我有一个类似确认的弹出div,显示在下面

<div class='pop'>
    check me
    <span class="spok">Ok </span>
    <span class="spcancel">cancel </span>
</div>

现在这个弹出窗口将在某种条件下打开,点击按钮我想将一些值返回给父函数

我可以调用函数,但是。。。。当我试图隐藏弹出窗口时,它会提醒我它被调用的次数。在下拉列表中选择"是"或"否",然后单击"确定"或"取消"两到三次后,您将看到效果

function showpop (onclose){
   $('.pop').show();
    $(".spok").click(function(){
        onclose('OK');
    });
    $(".spcancel").click(function(){
        onclose('CANCEL');
          $('.pop').hide();
    });   
}
$("#slt").change(function(){
       var retval = showpop(function(retval){
                   $('.pop').hide();
    if($("#slt").val() == "yes")
        ImYes();
        else
          ImNo(); 
       }).done(function(){
       });
});
$(document).ready(function(){
}); 
function ImYes()
{
alert('I am yes');
}
function ImNo()
{
alert('I am No');
}

在此处查找完整代码

http://jsfiddle.net/mparvez1986/gp5emrm4/8/

每次调用showpop:时都会初始化事件处理程序

 $(".spok").click(function(){
        onclose('OK'); 
 });

这显然会导致多次出现警报。

不要这么做:

  • ready函数中初始化一次
  • 或者检查是否已经设置了处理程序
  • 或者在每次使用后删除处理程序