2013-03-19 65 views
1

我已經使用引導模式讓一個確認對話框這個下面的代碼,它被假設是稱爲閉包內:爲什麼此Bootstrap確認對話框不起作用?

this.events.register(this, function(e) { 

    this.makeModal(e); 

    // this is what used to work for me 
    /* 
    if (confirm('Are you sure?')) { 
    alert(e.data); 
    } else { 
    // DO NOTHING 
    } 
    */ 
}); 

makeModal: function(e) {  

    //... 

    $(btnCancel).on("click", $(modal).modal('hide')); 
    $(btnConfirm).on("click", alert('confirm')); 
} 

只有兩個按鈕,分別是btnCancel和btnConfirm。問題在於調用外部函數後,內部警報也會立即觸發,這使得確認對話框無效。我怎樣才能解決這個問題? 由於特定的原因,我不能使用像引導箱等庫。

或者我可以只返回是或否從這種模式?如果是的話我該怎麼做?

預先感謝您!


編輯: 這是我可憐的企圖是返回或沒有:

makeModal: function(e) {  

    //... 
    var choice; 
    $(btnCancel).on("click", choice = false); 
    $(btnConfirm).on("click", choice = true); 
    return choice; 
} 

回答

3

這裏是爲了實現你正在試圖做的另一種方式的例子:

$('#myModal').bind('show', function() { 
    var id = $(this).data('id'), 
    yesBtn = $(this).find('.danger'); 
    $(yesBtn).data('id', id); 

}).modal({ backdrop: true }); 

$('.delete-button').click(function(e) { 
    e.preventDefault(); 
    var id = $(this).data('id'); 
    $('#myModal').data('id', id).modal('show'); 
}); 

$('.danger').click(function(){ 
    var id = $(this).data('id'); 
    $('#myModal').modal('hide'); 
    alert('Deleting: ' + id); 
    //Do something with id 
}); 

Click here to see the JsFiddle

+0

我用其他方法來實現我的目標,所以我沒有在我的應用程序中測試你的代碼通貨膨脹。但我會接受你的答案,因爲小提琴的作品,謝謝你! – Hypnos 2013-03-28 00:11:15