javascript - 如何切换 DIV 元素的可见性?

标签 javascript jquery

我正在尝试使用 jQuery 切换 DIV 元素,一个很好的实现示例是单击 Udemy. 上的注册按钮。

我已经使用 jQuery 实现了类似的东西,但我确信为了获得我想要的效果,我必须使用 JavaScript,但只是我不知道如何使用 JavaScript。

我的实现可以在我的 fiddle 中看到 here ,我最初将 div 设置为 display:none 并使用 jQuery 在单击按钮时显示 div。
正如你可以用 fiddle 告诉我的那样,它显示一个放大的动画,而不是仅仅出现(不知道如何更改它),而且我只能通过再次单击按钮来使 div 消失。

此外,我将如何实现通过单击屏幕上的任意位置使 div 消失的功能?

提前感谢任何人花时间帮助我。

最佳答案

您面临的问题是,单击该按钮也是单击您希望弹出窗口消失的区域(如果该区域已显示)。因为事件冒泡,所以单击按钮将使弹出窗口出现,然后单击文档(由于冒泡,在此之后触发)将使弹出窗口立即消失。

要解决此问题,您还必须停止单击按钮,以免冒泡到文档的其余部分。您可以通过以下方式执行此操作:

  event.stopPropagation();

因此,您需要做的是确保单击按钮时,单击事件不会冒泡到文档,您已经在文档中设置了一个单击事件处理程序,使弹出窗口消失:

 $(document).on('click', function(event) {
   // We want to hide the pop up, but not if you click on 
   // the pop up itself - - anywhere else, but not the pop up
   if(event.target.id !== "pop-up"){
      $('#pop-up').hide();
   }
 });

请参阅此 fiddle 以获得工作版本:https://jsfiddle.net/0ajpd9go/8/

关于javascript - 如何切换 DIV 元素的可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376923/

相关文章:

javascript - 如何让 IE9 尊重 jquery hover()

javascript - 在Javascript中转义html属性中的双引号

javascript - jQuery 图像交换 if else

javascript - 将 csv 转换为 json 对象并循环遍历每个不工作的对象

javascript - jvectormap 标记

javascript - 带星号的 jQuery 选择器

javascript - Jquery Ajax - 不加载文本

javascript - 隐藏/显示比较 id 和类的部分

javascript - 如何在 VSCode 中设置 pathMapping 以调试 Snowpack 应用程序

jquery - 由于目标被视为被动,无法阻止被动事件监听器中的默认设置?为什么滚动时出现此错误?