gpt4 book ai didi

jquery - 当不透明度为零时,下拉列表项仍然可单击

转载 作者:行者123 更新时间:2023-12-01 07:41:48 25 4
gpt4 key购买 nike

问题是,当不透明度设置为零时,下拉按钮仍然可单击。我将不透明度设置为零,因为需要褪色效果。有没有其他方法可以让动画以及内容被 jquery 隐藏?

您可以在示例中看到,当我们将鼠标悬停在按钮下方时,光标会变成指针,并且元素可以单击。

尝试过这样做,但从未成功

$(".btn").on('click', function(e) {
e.stopPropagation();
var child = $(this).siblings();

if (!child.hasClass("visible")) {
child.animate({
'opacity': 1
}, 1000);
child.addClass("visible");
} else {
child.animate({
'opacity': 0
}, 1000);
child.removeClass("visible");
}
});

$(document).on('click', function(e) {
$(".visible").animate({
'opacity': 0
}, 1000);
$(".visible").removeClass("visible");
});
.btn {
outline: none;
border: none;
padding: 10px 20px;
cursor: pointer;
background-color: #eee;
color: #7b7b7b;
width: 150px;
box-shadow: 4px 4px 6px 0px rgba(0, 0, 0, .16);
font-weight: bold;
margin-bottom: 20px;
}

.dropdown {
position: relative;
display: inline;
}

.btn-dropdown {
padding: 0px;
margin: 0px;
list-style: none;
background-color: #fff;
position: absolute;
left: 0px;
top: 30px;
box-shadow: 4px 4px 6px 0px rgba(0, 0, 0, .16);
min-width: 200px;
border: 1px solid #ddd;
text-align: initial;
max-height: 210px;
overflow: auto;
opacity: 0;
z-index: 100;
}

.btn-dropdown li {
padding: 6px;
margin: 0px;
border-bottom: 1px solid #ddd;
cursor: pointer;
}

.btn-dropdown li:hover {
background-color: #ddd;
}

.btn-dropdown li:last-child {
border-bottom: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dropdown">
<button class="btn first">Select something</button>
<ul class="btn-dropdown">
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
</ul>
</div>

<div class="dropdown">
<button class="btn first">Select something</button>
<ul class="btn-dropdown">
<li>Black</li>
<li>Brown</li>
<li>Red</li>
<li>Orange</li>
</ul>
</div>

最佳答案

问题是因为当您将 opacity 设置为 0 时,元素仍然在 DOM 中,并且仍然可以与之交互,尽管事实上它们是看不见的- 类似于可见性:无

要解决此问题,您应该使用 display: none。您还可以结合使用 fadeToggle()fadeOut() 来简化逻辑,如下所示:

$(".btn").on('click', function(e) {
e.stopPropagation();
var $dropdown = $(this).siblings().fadeToggle(); // toggle this dropdown
$('.dropdown .btn-dropdown').not($dropdown).fadeOut(); // hide other dropdowns
});

$(document).on('click', function(e) {
$('.dropdown .btn-dropdown').fadeOut(); // hide all dropdowns
});
.btn {
outline: none;
border: none;
padding: 10px 20px;
cursor: pointer;
background-color: #eee;
color: #7b7b7b;
width: 150px;
box-shadow: 4px 4px 6px 0px rgba(0, 0, 0, .16);
font-weight: bold;
margin-bottom: 20px;
}

.dropdown {
position: relative;
display: inline;
}

.btn-dropdown {
padding: 0px;
margin: 0px;
list-style: none;
background-color: #fff;
position: absolute;
left: 0px;
top: 30px;
box-shadow: 4px 4px 6px 0px rgba(0, 0, 0, .16);
min-width: 200px;
border: 1px solid #ddd;
text-align: initial;
max-height: 210px;
overflow: auto;
display: none;
z-index: 100;
}

.btn-dropdown li {
padding: 6px;
margin: 0px;
border-bottom: 1px solid #ddd;
cursor: pointer;
}

.btn-dropdown li:hover {
background-color: #ddd;
}

.btn-dropdown li:last-child {
border-bottom: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="dropdown">
<button class="btn first">Select something</button>
<ul class="btn-dropdown">
<li>First</li>
<li>Second</li>
<li>Third</li>
<li>Fourth</li>
</ul>
</div>

<div class="dropdown">
<button class="btn first">Select something</button>
<ul class="btn-dropdown">
<li>Black</li>
<li>Brown</li>
<li>Red</li>
<li>Orange</li>
</ul>
</div>

关于jquery - 当不透明度为零时,下拉列表项仍然可单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46379591/

25 4 0
文章推荐: jquery - 使用Jquery选择