gpt4 book ai didi

jQuery - 在 Div2 单击时显示 Div1,然后在单击文档时隐藏 Div1

转载 作者:行者123 更新时间:2023-12-01 01:31:38 24 4
gpt4 key购买 nike

我有一个简单的问题。我试图在用户单击 div 时显示视频。然后,当用户单击页面上不在视频上的任意位置时,隐藏该视频。完成了数百万次,但我找不到如何做到这一点,并且 Stackoverflow 上的其他部分解决方案失败了。完整代码如下:

<html><head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!-- CSS -->
<style>#videoDiv{display:none;}</style>

<!-- jQuery -->
<script>
$(function(){
$(".clickForVideo").click(function(){
$("#videoDiv").show();
});
$(document).click(function(event){
if ($('#videoDiv').is(':visible')) {
/* tried replacing above line with this line according to stackoverflow - also failed
if(!$(event.target).closest('#videodiv').length) { */
$('#videoDiv').hide(); <!--Reference 1-->
}
});
});
</script></head>

<!-- HTML -->
<body>
<div id="videoDiv"><iframe src="https://www.youtube.com/embed/S28Zux62a_0">
</iframe></div>
<div class="clickForVideo">Click me to show video</div>
</body></html>

当我单击“.clickForVideo”div 时,没有视频出现。如果我注释掉标记为“Reference 1”的行,然后单击“.clickForVideo”,视频/div 就会出现,但是在按预期单击文档时不会消失。我将如何更改我的代码或为这个问题提供不同的解决方案。多谢。安德鲁

最佳答案

发生这种情况是因为 clickForVideo 也是文档的一部分。当您单击它时,文档(父级)的单击事件也会被调用,并再次隐藏它。

试试这个:

$(function(){
$(".clickForVideo").click(function(event) {
event.stopPropagation(); //<-----
$("#videoDiv").show();
});
$(document).click(function(event){
if ($('#videoDiv').is(':visible')) {
if(!$(event.target).closest('#videodiv').length) {
$('#videoDiv').hide();
}
}
});
});

event.stopPropagation()( DOC ) 应该停止将事件冒泡到父级,即 document

关于jQuery - 在 Div2 单击时显示 Div1,然后在单击文档时隐藏 Div1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45061805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com