4つのアイテムボタンがあるページがあります。ユーザーがこれらのボタンをクリックすると、コンテンツがスライドダウンします。
すでに表示されているコンテンツの場合は、このコンテンツを上にスライドしてから、適切なコンテンツを下にスライドする必要があります。
すべて正常に動作しますが、ユーザーがアイテムボタンの間をすばやくクリックすると、スライドが詰まり、他のスライドの上に表示され始めます。
次に例を示します。:http: //jsfiddle.net/7t6Eh/42/
ユーザーがアイテム間で「遅い」をクリックすると、すべて正常に機能します。
- エラーを再現するには[アイテムボタン間で高速]をクリックします。
'.is( ":visible")'を使用しようとしましたが、同じ結果が得られました。
誰かが私を助けることができますか?
コード
var active = 0;
$("#item1").click(function(){
if (active == 0){
$("#ContentList1").stop().slideToggle(function() {
active = 1;
});
} else {
if (active != 1){
$("#ContentList" + active).stop().slideToggle(function() {
$("#ContentList1").stop().slideToggle(function() {
active = 1;
});
});
}
}
});
$("#item2").click(function(){
if (active == 0){
$("#ContentList2").stop().slideToggle(function() {
active = 2;
});
} else {
if (active != 2){
$("#ContentList" + active).stop().slideToggle(function() {
$("#ContentList2").stop().slideToggle(function() {
active = 2;
});
});
}
}
});
$("#item3").click(function(){
if (active == 0){
$("#ContentList3").stop().slideToggle(function() {
active = 3;
});
} else {
if (active != 3){
$("#ContentList" + active).stop().slideToggle(function() {
$("#ContentList3").stop().slideToggle(function() {
active = 3;
});
});
}
}
});
$("#item4").click(function(){
if (active == 0){
$("#ContentList4").stop().slideToggle(function() {
active = 4;
});
} else {
if (active != 4){
$("#ContentList" + active).stop().slideToggle(function() {
$("#ContentList4").stop().slideToggle(function() {
active = 4;
});
});
}
}
});