gpt4 book ai didi

javascript - 切换/文档/单击并关闭其他?

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:38 25 4
gpt4 key购买 nike

这是场景。

第 1 步 - 单击操作会打开一个下拉菜单,单击除下拉区域和操作文本以外的任何地方都可以将其关闭。

问题 1- 我希望这也仅在点击操作文本时接近。因此,解决方案是在下拉区域以外的任何地方单击区域以及单击操作文本时关闭。 enter image description here

第 2 步 -单击多个操作文本会打开多个下拉菜单。

问题 2- 我希望它是这样的,如果一个打开另一个关闭。 enter image description here

代码:

$('.ToggleClass a').click(function(ev) {
$(this).next('.ActionDropDown').fadeIn(500);


});
$(document).click(function(e) {
e.stopPropagation();
var container = $(".ToggleClass");

//check if the clicked area is dropDown or not
if (container.has(e.target).length === 0) {
$('.ActionDropDown').fadeOut(500);
}

});
* {
margin: 0px;
padding: 0px;
float: left;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
font-family: arial;
}

a {
text-decoration: none;
}

body,
html {
width: 100%;
height: 100%;
background: #cbeeff
}

.row1 {
width: 100%;
background: #fff;
margin: 5px 0;
}

.row1-2 {
width: 50%;
position: relative;
text-align: center;
padding: 10px 0;
border-right: 2px solid #000
}

.row1-2+.row1-2 {
border-right: 0px;
}

.row1-2 a {
color: #ff4886;
float: none;
}

.ActionDropDown {
position: absolute;
background: #7bd4ff;
border: 2px solid #000;
top: 20px;
padding: 30px 10px;
display: none;
z-index: 9;
right: 0px;
left: 0px;
max-width: 180px;
margin: 0px auto;
}
.InfoDiv{ width:100%; padding:10px; background:#ffadc9;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-----Row 1--------->
<div class="row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 1--------->
<!-----Row 2--------->
<div class="row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 2--------->
<!-----Row 3--------->
<div class="row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 3--------->

<div class="InfoDiv">
<b>Info:</b> Right now click on Action on each row open drop down multiple times. What I want is when one drop down is open on click of action , the other drop down if open should get close.
</div>

最佳答案

请参阅下面的片段或 jsfiddle

将这一行添加到您的 jQuery 中:

$(this).parents(".row").siblings(".row").find(".ActionDropDown").fadeOut(500)

还在您的 HTML 中为所有父行添加了一个公共(public)类(class row)

您需要搜索另一个 ActionDropDown 并在打开另一个的同时将其关闭

编辑:添加了新的 JQ 代码用于在容器外点击 + 解释

您可以向 IF 添加新条件

&& $(".ActionDropDown").has(e.target).length === 0) -> 如果点击的元素不是 ActionDropDown 的后代> 。只在你需要的时候

请参阅下面更新的 fiddle 或片段

EDIT2:添加条件以检查在单击同一 Action 时下拉菜单是否打开。

var dropDown = $(this).next('.ActionDropDown')
if ($(dropDown).is(":visible")) {
$(dropDown).fadeOut(500)
} else {
$(dropDown).fadeIn(500)
}

请参阅下面的代码片段或更新的 fiddle

$('.ToggleClass a').click(function(ev) {
var dropDown = $(this).next('.ActionDropDown')
if ($(dropDown).is(":visible")) {
$(dropDown).fadeOut(500)
} else {
$(dropDown).fadeIn(500)
}

$(this).parents(".row").siblings(".row").find(".ActionDropDown:visible").fadeOut(500)


});
$(document).mouseup(function (e)
{

if (!$(".ActionDropDown").is(e.target) ) // if the target of the click is not the dropDown
{
$(".ActionDropDown").fadeOut(500);
}
});
* {
margin: 0px;
padding: 0px;
float: left;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
font-family: arial;
}

a {
text-decoration: none;
}

body,
html {
width: 100%;
height: 100%;
background: #cbeeff
}

.row1 {
width: 100%;
background: #fff;
margin: 5px 0;
}

.row1-2 {
width: 50%;
position: relative;
text-align: center;
padding: 10px 0;
border-right: 2px solid #000
}

.row1-2+.row1-2 {
border-right: 0px;
}

.row1-2 a {
color: #ff4886;
float: none;
}

.ActionDropDown {
position: absolute;
background: #7bd4ff;
border: 2px solid #000;
top: 20px;
padding: 30px 10px;
display: none;
z-index: 9;
right: 0px;
left: 0px;
max-width: 180px;
margin: 0px auto;
}
.InfoDiv{ width:100%; padding:10px; background:#ffadc9;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-----Row 1--------->
<div class="row row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 1--------->
<!-----Row 2--------->
<div class="row row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 2--------->
<!-----Row 3--------->
<div class="row row1">
<div class="row1-2">Simple Text</div>
<div class="row1-2 ToggleClass"> <a href="#">Action</a>
<div class="ActionDropDown">
I am a Drop Down !
</div>
</div>
</div>
<!-----Row 3--------->

<div class="InfoDiv">
<b>Info:</b> Right now click on Action on each row open drop down multiple times. What I want is when one drop down is open on click of action , the other drop down if open should get close.
</div>

关于javascript - 切换/文档/单击并关闭其他?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43272270/

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