1
event.targetプロパティを理解するのに少し助けが必要です。Event.targetとクラスを使用してオフスクリーンのナビゲーションを閉じる
button
がクリックされたときにスライドして外に出るnav
を作成しました。 nav
が画面に表示されているときは、クラスnav-open
が追加されています。私は、ユーザーがどこかをクリックした場合に機能を追加しようとしましたが、nav
それが閉じてしまうので、私はターゲットにしようとし:
- クラス名は
- ユーザーが持つ
をクリックしてください次のコードは動作していないようです:
$(window).click(function(e) {
if(nav.hasClass('nav-open') && e.target != nav) {
nav.removeClass('nav-open');
}
});
誰でも助けてもらえますか?下の完全なスニペット。
$(document).ready(function() {
\t
\t var button = $('button');
\t var nav = $('nav');
\t
\t button.click(function() {
\t \t nav.toggleClass('nav-open');
\t });
\t
// \t $(window).click(function(e) {
// \t \t if(nav.hasClass('nav-open') && e.target != nav) {
// \t \t \t nav.removeClass('nav-open');
// \t \t }
\t \t
// \t });
\t
\t
\t
\t
});
* {
\t padding: 0;
\t margin: 0;
}
.container {
\t border: 1px solid;
\t height: 1000px;
\t width: 100%;
\t background-color: #ccc;
\t position: relative;
\t z-index: 1;
}
button{
\t position: relative;
\t left: 500px;
\t top: 30px;
}
nav {
\t height: 100vh;
\t width: 300px;
\t left: 0;
\t top: 0;
\t position: absolute;
\t background-color: #444;
\t z-index: 2;
\t transform: translate3d(-300px,0,0);
\t transition: all .4s ease;
}
.nav-open {
\t transform: translate3d(0px,0,0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav></nav>
<div class="container">
\t <button>click me</button>
</div>
あなたはあなたの例を説明してくださいできますか? –
on( 'click'、 'nav'、function(){})のイベントを渡す必要があります。 – hungerstar
@TheodoreSteiner確かに。 'body'のイベントを追加してナビゲーションを閉じる必要があります。 'nav'がクリックされた場合は' stopPropagation'を追加してイベントのバブリングを防ぐので、イベントは親から取られません。 – Kushtrim