gpt4 book ai didi

javascript - jQuery animate,在动画完成之前忽略额外的点击

转载 作者:行者123 更新时间:2023-11-30 10:31:18 25 4
gpt4 key购买 nike

我创建了一些脚本来在单击粗体标题时显示一个列表,并在单击另一个标题时隐藏同一个列表。

有没有办法让 animate 在动画运行时忽略额外的点击?

这是我创建的一个 fiddle :

http://jsfiddle.net/VBh5f/

这是 HTML:

<ul id="accordion" class="collapsible">
<li class="main"><span>+</span> <b>Oil and Vinegar</b>
<ul>
<li>Extra Virgin Olive Oil</li>
<li>Nut and Seed Oils</li>
<li>Balsamic Vinegar</li>
<li>Wine Vinegar</li>
</ul>
</li>
<li class="main"><span>+</span> <b>Coffee and Tea</b>
<ul>
<li>Mariage Frères Tea</li>
<li>Peaberry&#039;s Coffee and Tea</li>
</ul>
</li>
</ul>

这是 JavaScript:

function show(i) {
$('.main > ul:eq('+i+')').css(
{
display:'block'
}
).animate(
{
opacity: 1
},
100,
function() {
$(this).parent().find('span').text('-');
}
);
}

function hide(i) {
$('.main > ul:eq('+i+')').css(
{
display:'none'
}
).animate(
{
opacity: 1
},
100,
function() {
$(this).parent().find('span').text('+');
}
);
}

function listControl(i, doWhat) {
$('.main').each(function(index, elem) {
hide(index);
});
if (doWhat === 'showList') {
show(i);
}
}

function click() {
$('.main').on('click', function() {
if ( $(this).find('ul').css('display') === 'none' ) {
listControl( $(this).index(), 'showList' );
}
else {
listControl( $(this).index() );
}
});
}

$(document).ready(function() {
click();
});

这是 CSS:

ul {list-style:none;}
.main > ul {display:none;}

最佳答案

试试这个:

http://jsfiddle.net/VBh5f/10/

$('.main').on('click', function() {
if($('#accordion ul').is(':animated')) return;
if ( $(this).find('ul').css('display') === 'none' ) {
listControl( $(this).index(), 'showList' );
}
else {
listControl( $(this).index() );
}
});

关于javascript - jQuery animate,在动画完成之前忽略额外的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16816921/

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