Bootstrap模态传递数据

时间:2013-11-22 11:40:32

标签: javascript jquery twitter-bootstrap modal-dialog

我正在使用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.我需要删除第二个函数调用中的第一个警报。

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,无需取消绑定事件处理程序。