【问题标题】:Jquery callback function executes multiple times [closed]Jquery回调函数执行多次[关闭]
【发布时间】:2015-03-17 12:35:36
【问题描述】:

我有一个弹出 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/

【问题讨论】:

  • 请将您的问题代码放在问题本身中,而不仅仅是在小提琴中。问题应该是自包含的

标签: javascript c# jquery asp.net


【解决方案1】:

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

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

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

不要这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多