我有一个通知窗口(绝对定位的 div),我希望它在单击该窗口外的所有内容时关闭。
我试过了:
<div id="#notifWindow">
<div id="notifs">Notifications...</div>
<a class="ajax" data-bla="blabla">Click for ajax</a>
</div>
$(document).on(function(event){
// If clicking over child elements stopPropagation() else window is closed.
if ($(this).closest('#notifWindow').length) event.stopPropagation();
else $('#notifWindow').hide();
})
// Just for your information
$(document).on('click', 'a.ajax', function(event){
// If I use onclick=event.stopPropagation() in #notifWindow this ajax fails
})
这里,$(this) 不是引发事件的元素,而是文档。
感谢您的时间。
解决方案
// Every .ajax inside #notifWindow (dinamically ajax generated) is executed.
$('#notifWindow').on('click', '.ajax', function(event) {
alert('This ajax is executed!');
});
// If clicking everywhere inside #notifWindow the propagation of 'click' is stopped
$('#notifWindow').on('click', function(event) {
event.stopPropagation();
$(document).on('click', '#open', function(event){
$('#notifWindow').slideDown();
event.stopInmediatePropagation(); // It avoid other click events for (document).
});
// Hides the window clicking everywhere
$(document).on('click', function(event) {
$('#notifWindow').hide();
});
谢谢你们 :-)