ユーザーがメニューをクリックしたときにオフキャンバスメニューを閉じるようにしたいと思っています。下のリンクからメニューを使用しています。これは、 '.offcanvas-expanded'クラスを適用して、メニューをCSSトランジション経由でビューポートに持っていきます。そのままにしておくと、メニューは[.offcanvas-toggle]ボタンをクリックすることでのみ開く/閉じることができます。クリック時にオフキャンバスメニューを閉じる
メニュー:http://slicejack.com/responsive-offcanvas-navigation-menu/
私は、ユーザーがメニューoutwithページ上の任意の場所をクリックしたときに、このクラスを切り替えることができるようにしたいと思います。私は次のスクリプトでこの試みを試みましたが(成功しなかった)、ページ全体がCSS移行のトリガーになっていました。
https://jsfiddle.net/graemebryson/onz7xspq/
jQuery(function($){
$('.offcanvas-toggle').on('click', function() {
$('body').toggleClass('offcanvas-expanded');
});
$(document).click (function (e) {
if ((e.target != $('.offcanvas')[0]) && ($('body').hasClass('offcanvas-expanded'))) {
$('body').toggleClass('offcanvas-expanded');
}
});
});
誰もが、私はこれを達成することができます方法についてのいくつかのアドバイスを提供してもらえますか?
UPDATE - 以下@Joffuttを経由して全答:あなたはすでに提供されている例を使用して
https://jsfiddle.net/graemebryson/97zdfwvf/
$(document).ready(function() {
$('.offcanvas-toggle').on('click', function() {
$('body').toggleClass('offcanvas-expanded');
});
});
$(document).click(function(e) {
if ((e.target != $('.offcanvas')[0]) && (e.target != $('.offcanvas-toggle')[0]) && ($('body').hasClass('offcanvas-expanded'))) {
var li_tags = $($('.offcanvas')[0]).find('li');
var a_tags = $($('.offcanvas')[0]).find('a');
for (var i = 0; i < li_tags.length; i++) {
if (e.target == li_tags[i] || e.target == a_tags[i]) {
return;
}
}
$('body').toggleClass('offcanvas-expanded');
}
});
この回答を確認してください[http://stackoverflow.com/a/9438635/3886874](http://stackoverflow.com/a/9438635/3886874) – Goku
おかげ@Goku - 私はこの答えを適応させましたが、トグルボタンはメニューの起動をトリガーしなくなりました。上記のコードを更新して、私が現在持っているものを示しています。 –
ちょっと@GraemeBryson [https://jsfiddle.net/](https://jsfiddle.net/)でサンプルコードを作成することができます。 – Goku