我正在使用Bootstrap2.3.2,
function showmodal(arg1){$('#myModal').modal({keyboard:true,backdrop:'static'});
$('#myModal').on('hidden',function(){
alert(arg1);
});}
function function1 {showmodal("one");}
function function2 {showmodal("two");}
当我调用function1()
时,模态将打开并关闭此模态“一个”警报消息即将到来。在我打电话给function2()
之后,模态将打开并关闭此模态“一个”即将发出警报,“两个”即将进入第二个警报。问题是两个警报都会进入函数2.我需要删除第二个函数调用中的第一个警报。
答案 0 :(得分:0)
您可以将函数参数保存为元素中的数据。
然后你需要移出事件监听器,或者你将多个事件绑定到同一个模态:
function showmodal(arg1) {
$('#myModal').data('arg', arg1).modal({
keyboard:true,
backdrop:'static'
});
}
$('#myModal').on('hidden',function(){
alert($(this).data('arg'));
});
function function1 {showmodal("one");}
function function2 {showmodal("two");}
或者,在绑定新事件之前取消绑定事件侦听器:
function showmodal(arg1){$('#myModal').modal({keyboard:true,backdrop:'static'});
$('#myModal').off('hidden').on('hidden',function(){
alert(arg1);
});}
答案 1 :(得分:0)
jQuery有一个名为one
的简洁函数,它允许绑定一个事件处理程序,每个事件每个元素最多调用一次:
function showmodal(arg1) {
$('#myModal').modal({keyboard:true,backdrop:'static'});
$('#myModal').one('hidden', function () {
alert(arg1);
});
}
我重新格式化了代码,但上述代码中与原始问题中的代码相关的唯一功能更改是通过调用on
将调用替换为one
。通过使用one
,无需取消绑定事件处理程序。