Jquery回调函数执行多次

时间:2015-03-17 12:35:36

标签: javascript c# jquery asp.net

我有一个弹出式div,如确认如下所示

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

现在这个popUp会在某些情况下打开,点击按钮我想将一些值返回到父函数

我能够回电功能但.... 当我试图隐藏弹出窗口时,它会多次警告它。在下拉列表中选择是或否,然后在单击确定或取消后,两次或三次,您将看到效果

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/

1 个答案:

答案 0 :(得分:3)

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

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

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

不要这样做:

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