1
我創建了一些腳本來顯示一個列表,當一個粗體標題被點擊時,並且當另一個標題被點擊時隱藏同一個列表。jQuery動畫,忽略其他點擊直到動畫完成
有沒有一種方法讓動畫在動畫運行時忽略其他點擊?
這裏是我創建了一個小提琴:
下面是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'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;}
+1這顯示的片體需要的答案:['.is(':animated')'](http://api.jquery.com/animated-selecto r /) – Orbling
雅,但是我很難在OP中看到任何動畫jsfiddle –
謝謝。如果你不介意,什麼是.is(':animated')在做什麼?在這種情況下返回意味着無效的權利?對不起,我只是試着學習,我以前沒見過.is()。 編輯:我檢查了jQuery的網站。也感謝Orblin的鏈接。 – Mdd