Jquery回调函数执行多次
Jquery callback function executes multiple times
我有一个类似确认的弹出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
函数中初始化一次 - 或者检查是否已经设置了处理程序
- 或者在每次使用后删除处理程序
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环