これをチェックして:Working example
ステップバイステップで行きましょう
#iconをクリックして、.contactのクラスを.contactexpandに変更します(または単に追加します)。[…]そして可能であれば、アイコンをもう一度クリックすると、クラスが再び元に戻ります。
toggleClass()
これを達成するためにメソッドを使用したいとします。単に:
$('#icon').on('click', function(e){
$(this).parent()
.toggleClass('contact')
.toggleClass('contactexpand');
});
次に、ボディをクリックしてクラスを元に戻します
クラスをbody
削除してをcontactexpand
追加contact
することを確認する必要があります。この時点で、物事を簡単にするために、コンテナ要素にid
(または必要class
に応じて)を指定します。次に、あなたがすることは非常に簡単です:
$('body').on('click', function(e){
$('#thisdiv')
.removeClass('contactexpand')
.addClass('contact');
});
しかしもちろん、新しいクラス.contactexpandをクリックしても発生しないはずです。
これは他の答えが逃したステップだと思います。クリックするたびにbody
要素もクリックするため、常にクリックイベントがトリガーされbody
、クラスが削除されcontactexpand
て追加されcontact
ます。
を入力しevent.stopPropagation()
ます。このメソッドは、イベントがDOMをバブルアップbody
せず、クリックをトリガーしないことを確認します。
$('#thisdiv').on('click', function(e){
e.stopPropagation();
});
Working example