gpt4 book ai didi

javascript - 如何使用 jQuery 组合淡出和删除处理

转载 作者:行者123 更新时间:2023-12-02 22:37:51 24 4
gpt4 key购买 nike

我正在创建模式窗口脚本。但是,当单击覆盖区域时,覆盖区域会在淡出之前被删除。我希望它在淡出后被删除。我尝试过使用 fadeOut 函数来等待删除覆盖区域,但没有成功。

请告诉我该怎么做。谢谢,提前了很多。

<style>
.modal {
display: none;
position: fixed;
left: 50%;
top: 50%;
z-index: 2;
transform: translate(-50%, -50%);
width: 50vw;
background-color: #fff;
}

.overlay{
display: none;
position: fixed;
width: 100%;
height: 100vh;
top: 0;
left: 0;
z-index: 1;
background: rgba(0,0,0,0.6);
}
</style>

<body>
<main>
<div>
<a class="open" href="" data-target="modal-01">modal-01</a><br>
<a class="open" href="" data-target="modal-02">modal-02</a>
</div>

<div class="modal" id="modal-01">
<p>modal-01 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Inventore possimus accusamus id dolorem alias sunt, omnis consectetur odio soluta modi, temporibus ducimus reprehenderit magnam adipisci quae suscipit nemo? Molestias, blanditiis!</p>
<a class="close" href="">CLOSE</a>
</div><!--modal-->

<div class="modal" id="modal-02">
<p>modal-02 Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequuntur culpa laudantium exercitationem consectetur facere voluptate quos non nesciunt quibusdam sapiente reprehenderit quidem cumque perferendis error, tempora quod adipisci earum. Animi?</p>
<a class="close" href="">CLOSE</a>
</div><!--modal-->

</main>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(function(){
$('.open').each(function(){
$(this).on('click',function(e){
e.preventDefault();
const target = $(this).data('target');
const id = document.getElementById(target);
$('body').append('<div class="overlay"></div>');
$(id).fadeIn();
$('.overlay').fadeIn();

$('.overlay,.close').on('click',function(){
$('.modal,.overlay' ).fadeOut( function(){
$('.overlay').remove();
});
});
});
});
});
</script>
</body>

最佳答案

问题是由于关闭按钮实际上是 <a>指向 href="" 的标签,这意味着当您单击它们时,页面会立即重新加载。

将这些 a 标签切换为 div,如下所示:

<div class="modal" id="modal-01">
<p>modal-01 Lorem ipsum, dolor sit amet consectetur adipisicing elit. Inventore possimus accusamus id dolorem alias sunt, omnis consectetur odio soluta modi, temporibus ducimus reprehenderit magnam adipisci quae suscipit nemo? Molestias, blanditiis!</p>
<div class="close">CLOSE</div>
</div><!--modal-->

<div class="modal" id="modal-02">
<p>modal-02 Lorem ipsum dolor, sit amet consectetur adipisicing elit. Consequuntur culpa laudantium exercitationem consectetur facere voluptate quos non nesciunt quibusdam sapiente reprehenderit quidem cumque perferendis error, tempora quod adipisci earum. Animi?</p>
<div class="close">CLOSE</div>
</div><!--modal-->

然后,将覆盖层和关闭按钮选择器的 onClick 更改为:

$('.overlay,.close').on('click',function(){
$('.overlay' ).fadeOut(function(){
$('.overlay').remove();
});
$('.modal' ).fadeOut();
});

关于javascript - 如何使用 jQuery 组合淡出和删除处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58684267/

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