クリックの代わりに toggle() 関数を使用することもできますが、私はトグルの大ファンではありません。以下のソリューションにもクラスが組み込まれていますが、これが私が行う方法です。
$(document).ready(function() {
$("#menuicon").click(function(e) {
var menuicon = $(e.target);
if (!menuicon.hasClass('open'){
menuicon.addClass('open');
$("nav ul, .content").animate({left: "-15%"}, 1000);
} else {
menuicon.removeClass('open');
$("nav ul, .content").animate({left: "0"}, 1000);
}
});
});
ダブルクリックを防ぐために「ワーキング」クラスも組み込みますが、それはプロジェクトで必要以上のものになる可能性があります。
編集:
いくつかの異なるオブジェクト (アンカー、img とスパン、またはその中の他の要素など) を含む複雑なメニュー オプションがある場合、私がかなり使用するちょっとした追加情報です。e.target とjquery 'closest()' 関数を使用して、その子の 1 つではなく、常にアンカーを選択していることを確認してください。
var clicked = $(e.target).closest('a');
これは、クリックしたオブジェクトから属性値もフェッチしようとしている場合に非常に役立ちます。これを使用すると、選択が常に「a」になることが確実にわかります (e.target が子 img などを返すのではなく)。そこから作業できます。