Javascript 单击其他位置时弹出div hide()-jQuery
我知道有很多关于这个问题的帖子,我也尝试过一些代码,认为它与我的完美结合,但后来我发现只有当我点击使它弹出的同一个Javascript 单击其他位置时弹出div hide()-jQuery,javascript,php,jquery,html,css,Javascript,Php,Jquery,Html,Css,我知道有很多关于这个问题的帖子,我也尝试过一些代码,认为它与我的完美结合,但后来我发现只有当我点击使它弹出的同一个时,以及当我点击我的\main之外的任何地方时,它才起作用(隐藏)。因此,如果我单击我的#main中的任何位置,我的弹出窗口就会停留在那里。我已经看了一段时间,不知道为什么 谁能帮我看一下吗 编辑: 这些是我的密码 我的html,其中有选择选项和colorSelectBox <div class="color-side-a"> <p class="sideA
时,以及当我点击我的\main
之外的任何地方时,它才起作用(隐藏)。因此,如果我单击我的#main
中的任何位置,我的弹出窗口就会停留在那里。我已经看了一段时间,不知道为什么
谁能帮我看一下吗
编辑:
这些是我的密码
我的html,其中有选择选项和colorSelectBox
<div class="color-side-a">
<p class="sideABCD-header">Side A</p>
<div class="dimension-width">
<p class="dimension-WHC">Colors</p>
<select name="number-of-colors" class="number-of-colors color-a">
<option value="" group="1">Select A Number</option>
<option value="1" group="1">1</option>
<option value="2" group="1">2</option>
<option value="3" group="1">3</option>
</select>
<div class="number-of-color-field">
<div name="color1" class="sideA color1" data-semi="false" data-coated="false"></div>
<div name="color2" class="sideA color2" data-semi="false" data-coated="false"></div>
<div name="color3" class="sideA color3" data-semi="false" data-coated="false"></div>
</div>
</div>
</div><!-- end color side A -->
<div class="colorSelectBox">
<div>14 Guage Semi-Transparent</div>
<div>
<div class="azRed" value="#DD2A13" name="Aztec Red"></div>
<div class="azYellow" value="#E5BC0A" name="Aztec Yellow"></div>
</div>
<div class="clear"></div>
<div>18 oz Industrial Stength Viyl Coated</div>
<div>
<div class="yellow" value="yellow" name="yellow"></div>
<div class="blue" value="blue" name="blue"></div>
<div class="black" value="black" name="black"></div>
<div class="brown" value="brown" name="brown"></div>
<div class="grey" value="grey" name="grey"></div>
<div class="green" value="green" name="green"></div>
<div class="white" value="white" name="white"></div>
<div class="orange" value="orange" name="orange"></div>
</div>
上面是原始代码,我在网上搜索找到了,这也是迭戈提供的
/*Makes the colorSelect hide when mouse clicked other places*/
$(document).mouseup(function (e) {
var container = $(".colorSelectBox");
if (!container.is(e.target) && container.has(e.target).length === 0){
container.hide();
}
});
上面的代码运行得很好,但我真正想要的是当我单击某个div
时,框弹出,当我再次单击同一div
或框外的任何位置时,框将消失。上面的代码只有在我单击框外的任何位置时才能正常工作,但如果我单击使其弹出的div
,框的位置将仅更改为我的鼠标位置。我尝试添加/删除类,因为它现在在我的代码中被注释掉了,可以在上面看到,它可以工作,但仍然存在问题,因为当我单击框外的任何位置时,框内的类将不会删除,因此我将删除类添加到上面的代码中,如果单击框外的任何位置,类将被删除。但这不起作用
提前感谢您的帮助。我有点幸运,我想我找到了隐藏colorbox div的jQuery代码
$(document).click(function (e) {
if ($(e.target).closest('.colorSelectBox').length > 0 || $(e.target).closest('div').length > 0) return;
$('.colorSelectBox').hide();
});
它不会隐藏它的原因是因为第二个条件:
$(e.target).closest('div').length > 0
它基本上说,如果单击的元素是div或div的子元素,那么不要隐藏它。由于到处都有div,它将始终返回该函数,并且从不隐藏。我不知道您在这里尝试了什么。替换$(文档)。单击第690行的
函数,使用以下内容:
$(document).mouseup(function (e) {
var container = $(".colorSelectBox");
if (!container.is(e.target) && container.has(e.target).length === 0)
{
container.hide();
}
});
检查此问题:我无法查看页面,因为我在平板电脑上,但我非常确定此“div”是一个
,里面有一些
。你真的需要它成为一个自定义div吗?我在页面的“查看源代码”中意识到,每个js函数都标有“function to”的描述。您可能需要检查所有这些实例,以找到真正符合您所需的代码。@Lauromine选择一个数字
是一个
,根据值选择
的#将弹出。我实际上也尝试过这个方法,反应相同。是的,这就是它的工作原理,你尝试过这个解决方案吗?是的,这就是我的意思,这实际上是我找到并尝试过的第一个编码,但当在任何其他元素中单击时也不会隐藏。因此,搜索了很多其他方法,但仍然无法理解这就是我发布此线程的原因:(尝试一下,我100%确定这是可行的,但您必须替换第717行的代码整个$(文档)。单击函数您必须删除的函数位于第717行,此:$(文档)。单击(函数(e){if($(e.target)。最近('.colorSelectBox').length>0 | |$(e.target).closest('div').length>0)返回;$('.colorSelectBox').hide();});所需的是在弹出div后,选择弹出div中的一种颜色,然后div将隐藏,或者单击弹出div以外的任何位置也将隐藏它。您不需要第二个条件。只需删除它即可。如果单击.colorSelectBox上的任何位置,第一个条件就可以了
它不会隐藏div
,其他所有内容都会隐藏。当选择任何选项时,您可以使用另一个功能隐藏.colorSelectBox
。
$(document).mouseup(function (e) {
var container = $(".colorSelectBox");
if (!container.is(e.target) && container.has(e.target).length === 0)
{
container.hide();
}
});