我想通過單击div中的關闭鏈接来隱藏div, or 通過點击该div以外的任何地方。
我正在尝試遵循以下代碼,它可以通過正確單击關闭鏈接来打開和關闭div,但是如果我無法通過單击div以外的任何位置来關闭它,則可以關闭。
$(".link").click(function() {
$(".popup").fadeIn(300);
}
);
$('.close').click(function() {
$(".popup").fadeOut(300);
}
);
$('body').click(function() {
if (!$(this.target).is('.popup')) {
$(".popup").hide();
}
}
);
<div class="box">
<a href="#" class="link">Open</a>
<div class="popup">
Hello world
<a class="close" href="#">Close</a>
</div>
</div>
最新回復
- 5月前1 #
- 5月前2 #
您需要
$('body').click(function(e) { if (!$(e.target).closest('.popup').length){ $(".popup").hide(); } });
- 5月前3 #
我建議使用stopPropagation()方法,如修改後的小提琴所示:
提琴
$('body').click(function() { $(".popup").hide(); }); $('.popup').click(function(e) { e.stopPropagation(); });
這樣,您可以在單击主體時隱藏弹出視窗,而無需添加額外的if,並且当您單击弹出視窗時,事件不会通過弹出視窗弹出到主體. / p>
- 5月前4 #
您最好選擇類似這樣的东西.只需给要隱藏的div輸入一个id,然後建立一个類似這樣的函式即可。 通過在正文上添加onclick事件来呼叫此函式。
function myFunction(event) { if(event.target.id!="target_id") { document.getElementById("target_id").style.display="none"; } }
- 5月前5 #
添加一个透明背景,该背景占据整个視窗的大小,就在弹出div之前
.transparent-back{ position: fixed; top: 0px; left:0px; width: 100%; height: 100%; background-color: rgba(255,255,255,0.5); }
然後單击它,關闭弹出視窗。
$(".transparent-back").on('click',function(){ $('popup').fadeOut(300); });
相似問題
- javascript:从另一个頁面获取Bootstrap的模式內容javascriptjqueryhtmltwitterbootstrapmodaldialog2021-01-11 22:55
- javascript:jQuery Deferred和對话框javascriptjqueryjqueryui2021-01-12 01:25
- 使用javascript捕获在android虛擬鍵盤上键入的键javascriptandroidjquerysamsungmobile2021-01-11 08:24
- javascript:没有jquery的jquery的"觸發"方法等效於什麼?javascriptjquery2021-01-11 12:57
- 用於渲染HTML和JavaScript的Python庫javascriptpythonhtml2021-01-11 13:24
另一種方法則是 您的jsfiddle越野車少(需要双击打開)。
這不会在主體級別使用任何委託事件
Set
tabindex="-1"
到DIV .popup(以及樣式CSSoutline:0
)演示