2017-10-15 24 views
-1

引導事件在可用事件內提供給我們event.relatedTarget。 我正在使用shown.bs.modal。在正常情況下,event.relatedTarget具有按鈕對象,我們可以通過在下面的按鈕上使用onlick事件來點擊並激活模式。事件對象始終具有relatedTarget undefined

$("#buttonId").click(function(){ 
    $("#modalId").modal('toggle'); 
}); 

那麼我們可以用下面的方式來獲得按鈕

$('#modalId').on('shown.bs.modal', function(event) { 
    var button = $(event.relatedTarget); // Button that triggered the modal 
}); 

現在我在文件管理器插件的工作中,我對瀏覽文件上下文菜單結合,並在上下文菜單中我有一個菜單項Rename,當我點擊重命名,我必須打開模式窗口併發送文件名,我必須重命名。我可以通過上下文菜單選項選擇發送文件名,即通過單擊重命名選項,我可以獲得文件div的對象,該文件具有屬性ID內的文件名,但這不會幫助,因爲我需要引導程序中的文件div對象顯示事件,我從與調用該函數 openRenameWindow(#clickedFileDivObject);打開模式在上下文菜單回調函數和函數內我打開如下圖所示

function openRenameWindow{ 
    $("#rename-file").modal('toggle'); 
} 

現在的問題是模態時,我的事件綁定事件對象的shown.bs.modal始終有未定義的relatedTarget。有人可以指導我如何獲得文件名。

回答

1

至於我的理解,你需要傳遞一些東西到你的模式窗口,如果我理解錯誤,請通過添加評論來糾正我。

簡單的解決方案:

您的問題引起的,你沒有通過button對象作爲第二PARAM當你切換的顯示/顯示模態窗口:

//pass button object 
$("#rename-file").modal('toggle', $("#buttonId")); 

你可以做以下情形太:

每個鏈接應該有一個類.rename和你可以保存fileName作爲數據屬性在你的按鈕或按鈕旁邊的div,當你打開模式窗口通過e fileName作爲它的數據屬性。

$(".rename").click(function(e){ 
    e.preventDefault(); 
    var $this = $(this); 
    var fileName = $(this).data("file"); 
    $("#basicModal").data("fileName", fileName).modal("toggle", $this); 

}); 

$("#basicModal").on("shown.bs.modal", function(e){ 
    //data-fileName attribute associated with the modal added in the click event of the button 
    alert($(this).data("fileName")); 
    //my data-file associated with the button 
    alert($(e.relatedTarget).data("file")); 
}) 

Demo in Codepen兩種解決方案:

如果您需要在模態窗口更多的選擇,這是一個library基於Bootstrap 4

+0

感謝,這是它,我一直在尋找爲引導的js文件是我寫的,完全忽略了我可以通過jquery完成,感謝您的幫助 –