6

在我的HTML元素我有這個我情態動詞的一個內:獲取該封閉的模態

<a href="#" class="clicker" data-dismiss="modal">Click</a> 

它隱藏模式如果點擊這個元素。

不過,我希望能夠得到那個封閉的模式jQuery中,像元素:

$('#myModal').on('hidden.bs.modal', function(event) 
{ 
    var invoker = $(event.relatedTarget); 
}); 

但是,這是行不通的。 relatedTarget似乎只適用於show.bs.modalshown.bs.modalas per the documentation)。

我怎能獲取引起的模態,收於hidden.bs.modal事件的元素?

+1

難道你沒有'event.target'嗎? –

+0

我已經創建了一個codepen來測試@AllanStepps解決方案,但是event.target指向了整個模式,而不是單擊的元素。 –

+1

'event.currentTarget'怎麼樣? (=附加了事件偵聽器的節​​點。)https://developer.mozilla.org/en-US/docs/Web/Events/click –

回答

1

I have made a Pen to show how to achieve the desired result。正如你在這個例子中看到的那樣,由Bootstrap產生的事件不會共享用於關閉模式的確切元素。他們參考.target.currentTarget,整個模態元素本身。

因此,爲了得到那個被點擊關閉模式的元素,我已經使用jQuery選擇功能。像這樣:

$("[data-dismiss='modal']").click(function() { 
    $("#data-dismiss").html('#'+ $(this).attr('id')); 
}); 

在這種情況下,jQuery是搜索具有與值modal以及將所述屬性data-dismiss每個元素,以發現那些元素,被點擊時所執行的回調函數。

正如你可以在我已經看到的例子,有兩個按鈕具有這種屬性。一個在模態的標題:

<button id="header-close-button" type="button" 
     class="close" data-dismiss="modal" aria-label="Close"> 
    <span aria-hidden="true">&times;</span> 
</button> 

而另一位在該模式的頁腳:

<button id="footer-close-button" type="button" 
     class="close" data-dismiss="modal" aria-label="Close"> 
    <span aria-hidden="true">Close</span> 
</button> 

這兩個按鈕有我設置表明您可以檢查正是被點擊了其中一個不同的ID - 通過附加到click事件的回調函數上的$(this).attr('id')