首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭现有弹出窗口

关闭现有弹出窗口
EN

Stack Overflow用户
提问于 2018-09-10 12:52:27
回答 2查看 1.8K关注 0票数 1

我使用Fancybox 3显示3个项目。它们都使用图库属性链接在一起,如下所示:

代码语言:javascript
复制
<!-- Item 1 -->
<a data-fancybox="gallery" data-src="#gallery-1" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-1">
  <h2>Gallery 1</h2>
  <p>Content</p>
  <a data-fancybox data-src="signup" href="javascript:;">
</div>

<!-- Item 2 -->
<a data-fancybox="gallery" data-src="#gallery-2" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-2">
  <h2>Gallery 2</h2>
  <p>Content</p>
  <a data-fancybox data-src="signup" href="javascript:;">
</div>

<!-- Item 3 -->
<a data-fancybox="gallery" data-src="#gallery-3" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-3">
  <h2>Gallery 3</h2>
  <p>Content</p>
  <a data-fancybox data-src="#signup" href="javascript:;">
</div>

<!-- Signup -->
<div style="display: none;" id="signup">
  <h2>Signup</h2>
  <p>Sign up form goes here</h2>
</div>

在每个项目中,有一个注册链接,链接到一个单独的弹出窗口。单击后,这将在已经打开的图库项中打开另一个fancybox窗口。如何在触发另一个实例之前关闭前一个实例?我宁愿他们不筑巢。

我已经在我的JS里尝试过了,但是它不起作用:

代码语言:javascript
复制
( function( $ ) {
    $('[data-fancybox]').fancybox({
        closeExisting: true,
        loop: true
    });
} )( jQuery )
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-10 13:01:24

你的代码片段很好- https://codepen.io/anon/pen/oPEXQj?editors=1010

只需确保您使用的是最新版本,因为closeExisting选项可以从v3.4.0开始使用。

顺便说一句,您应该用data-src="signup"替换data-src="#signup"来加载内联内容。

票数 1
EN

Stack Overflow用户

发布于 2018-09-10 13:04:33

基本解

解决问题的方法是:

代码语言:javascript
复制
<div style="display: none;" id="gallery-1">
  <h2>Title 1 - Make this screen much bigger ****************************</h2>
  <p>  <a data-fancybox data-src="#signup" onclick='$.fancybox.close()' href='#'">Sign me up</a></p>
</div>

参考资料:从打开的'fancybox‘中关闭功能的花式盒

工作实例:

https://jsfiddle.net/euo4byj2/15/

工作守则:

代码语言:javascript
复制
<script src="//code.jquery.com/jquery-3.3.1.min.js"></script>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.1/jquery.fancybox.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.4.1/jquery.fancybox.min.js"></script>


<div style="display: none;" id="signup">
  <h2>SIGN UP 1</h2>
  <p>Content</p> 
</div>



<!-- Item 1 -->
<a data-fancybox="gallery" data-src="#gallery-1" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-1">
  <h2>Title 1 - Make this screen much bigger ****************************</h2>
  <p>  <a data-fancybox data-src="#signup" onclick='$.fancybox.close()' href='#'">Sign me up</a></p>
</div>

<!-- Item 2 -->
<a data-fancybox="gallery" data-src="#gallery-2" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-2">
  <h2>Title 2</h2>
  <p>Content</p>
  <a data-fancybox data-src="signup" href="javascript:;">
</div>

<!-- Item 3 -->
<a data-fancybox="gallery" data-src="#gallery-3" href="javascript:;">
  Open Me
</a>

<div style="display: none;" id="gallery-3">
  <h2>Title 3</h2>
  <p>Content</p>
  <a data-fancybox data-src="signup" href="javascript:;">
</div>

<!-- Signup -->
<div style="display: none;" id="signup">
  <h2>Signup</h2>
  <p>Sign up form goes here</h2>
</div>


<script>

/* ( function( $ ) {
    $('[data-fancybox]').fancybox({
        closeExisting: true,
        loop: true
    });
} )( jQuery );
 */

</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52258249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档