0
私は非常にうまく動作する(ブラウザ間でテストされていない)アコーディオンスクリプトを作成し、各引き出し内のコンテンツを画面上でアクセスして見えるようにしました。何度もアコーディオンが開き、開かれた後の位置付けに問題を引き起こします。とにかく、私が使用しているコードには、アクティブなトグル機能とクリック時に呼び出されるスクロール機能があります。アコーディオン機能
function toggleActive(link){ // Set anchor to active
if ($(link).hasClass("active")) {
$(link).removeClass("active");
} else {
$(link).addClass("active");
};
};
function scrollToElement(selector, time, verticalOffset) { // param 1 = id, param 2 = speed
time = typeof(time) != 'undefined' ? time : 1000;
verticalOffset = typeof(verticalOffset) != 'undefined' ? verticalOffset : 0;
element = $(selector);
offset = element.offset();
offsetTop = offset.top + verticalOffset;
$('html, body').animate({scrollTop: offsetTop }, time);
}
$('#accordion a').click(function(e) {
var link = '#' + event.target.id
$(".tab-content").slideUp();
$(".tab").removeClass("active");
toggleActive(link);
$(link).next().slideToggle("fast");
setTimeout(function() {
scrollToElement($(link), 500);
}, 500);
e.preventDefault();
});
クリックすると、すべてのタブが閉じられ、非アクティブになり、ターゲットの「引き出し」が開き、アクティブになります。何らかの理由ですでに「アクティブな」ドロワーをクリックした場合は、再びスクリプトを実行します。私がしたいのは、あなたがちょうどクリックしたものが既に開いているかどうかを判断し、単純にその引き出しを閉じるIF文を配置することです。前もって感謝します。なぜこれが私の頭痛を引き起こしているのか分かりません。
ボタンのIF文で構文が正しくないようです。 ")"がどこかにありません。私は通常、IF文で関数を呼び出さないので、わかりません。ありがとう! – user3817083
私はそれを修正しました。ありがとう、この作品!あなたダ男! – user3817083
これは役に立ちました。嬉しいです。 –