2013-11-22 59 views
1

我使用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()之后,模式将会打开并关闭这个模式,“一”会首先发出警报,“两”会发出第二次警报。问题是警报将进入function2.I需要删除第二个函数调用中的第一个警报。

回答

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); 
});} 
+0

非常感谢。它工作正常。 – user3021293

0

jQuery有一个名为one的整洁函数,它允许绑定一个事件句柄,该句柄每个事件每个元素最多被调用一次:

function showmodal(arg1) { 
    $('#myModal').modal({keyboard:true,backdrop:'static'}); 
    $('#myModal').one('hidden', function() { 
     alert(arg1); 
    }); 
} 

我已将代码重新格式化,但上述代码中与原始问题代码相关的唯一功能更改是通过致电one替换对on的调用。通过使用one,不需要解除绑定事件处理程序。