navigational menu
を作成しましたが、それらの一部にはサブメニューがあります。ユーザーがそのメニュー項目をクリックするとfa-chevron-down
(下矢印アイコン)のメニュー項目をfa-chevron-up
(上矢印アイコン)に変更し、他の場所をクリックすると元に戻るようにしたいさらに、私は2つの要求も持っています。
1)私はjqueryに非常に慣れていないので、私が書いたjqueryコードはうまくいくようですが、もっと良い方法はありますか? (1つのメニュー項目が2回クリックされると、スライドが2回行われることに注意してください。そのANNOYING)
2)ユーザーがウィンドウのサイズを変更すると、html要素は所定の位置にとどまらず、散らばります。
前もって感謝します。
UPDATE:問題を解決していただきありがとうございます。私は問題をさらに改善し、それは完全に機能しています。これが最後です**[〜#〜] jsfiddle [〜#〜] **
アイコンを変更するには、クリックイベントで次のように簡単に行うことができます。
$(this).find($(".fa")).removeClass('fa-chevron-down').addClass('fa-chevron-up');
詳細については、jsfiddleの例をご覧ください。
クラスを変える必要はないと思います。
クラスを切り替えるのではなく、fa-chevron-down
をfa-chevron-up
に変更するだけの場合は、fa-rotate-180
にtoggleClass
を使用します。 fa-rotate-180
はアイコンを回転させ、目的を解決する可能性があります。個々のクラスを追加/削除する必要はありません。
まあ言ってみれば:
$('selector').click(function(){
$('menu-selector').toggleClass('fa-rotate-180');
});
単なるサンプルです。あなたはそれを回避することができます。
Font Awesome v5では、状況がかなり変更されています。
これは、Bootstrap、JQuery、およびFontAwesomeで動作するプラス/マイナスの折りたたみボタンを取得するために使用したコードです。
HTML:
<a class="btn btn-collapse" id="btn-collapse" data-toggle="collapse" data-target="#collapse-section"><i class="fas fa-minus"></i></a>
JQueryスクリプト:
$("#btn-collapse").click(function() {
if ($(this).hasClass('collapsed')) {
$(this).find('svg').attr('data-icon', 'minus');
} else {
$(this).find('svg').attr('data-icon', 'plus');
}
});
シェブロンの上下をプラス/マイナスで置き換えることができるはずです。