2013-11-22 60 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,不需要解除綁定事件處理程序。