これをチェックして: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