Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保持模态打开,尽管点击它_Javascript_Jquery_Html - Fatal编程技术网

Javascript 保持模态打开,尽管点击它

Javascript 保持模态打开,尽管点击它,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试让切换模式保持打开状态,即使它被点击。它内部也有多个元素,如果单击其中一个元素,它仍然需要保持打开状态。我问了一个关于click events和event的类似问题。target:这是一个基于此的构建 我解决了前一个问题,剩下的问题是: $functione{ $filter-button.ClickFunction{ $.dialog.toggleClassshow; }; $window.clickfunction{ ife.target.tagName.toLowerCase!

我正在尝试让切换模式保持打开状态,即使它被点击。它内部也有多个元素,如果单击其中一个元素,它仍然需要保持打开状态。我问了一个关于click events和event的类似问题。target:这是一个基于此的构建

我解决了前一个问题,剩下的问题是:

$functione{ $filter-button.ClickFunction{ $.dialog.toggleClassshow; }; $window.clickfunction{ ife.target.tagName.toLowerCase!=“按钮”&&$.dialog.hasClassshow{ $.dialog.removeClassshow; }如果e.target.className.toLowerCase=='dialog'{ 返回false; } }; }; .对话{ 显示:无; 宽度:300px; 高度:300px; 背景色:红色; } .表演{ 显示:块!重要; } 显示/隐藏 你好 项目 项目 项目 项目 项目 项目
您需要阻止事件冒泡到将关闭模态的父元素,如预期的那样。您可以使用以下代码执行此操作:

$('.dialog').click(function(event) {
  event.stopPropagation();
});

为什么需要$window.click?@karthick据我所知,在本例中需要$window.click,因为如果我将click事件绑定到按钮上,我就看不到还单击了什么。该功能的一部分是能够在模态外部单击并关闭它。但是当它在里面被点击时,它需要保持打开状态。这非常有效!但我不明白为什么,因为dialog没有父母?它往哪里冒气泡?是什么导致冒泡关闭模式?它冒泡到您添加事件侦听器的元素的窗口,它传递您的if条件,从而删除show类并隐藏元素。我认为最好的做法是在您的模态周围包含一个包装器元素,这样您就可以向包装器添加一个事件处理程序,在单击包装器退出模态时关闭,并在停止传播的模态,这样你就可以点击模态上的任何地方现在你有一个点击窗口处理程序,每次你点击页面上的任何地方都会触发它-这不是一件好事。Jun我同意,但是要求是元素需要在对话框打开时可以点击。