2016-08-30 8 views
0

このイベントを行うには、バックボタンの近くにマウスを置くと、このdivに "Where are you ?。行く:(」私はそれが働いて持っているが、いくつかの時間後に、それは迷惑になりボタンを押した後にJqueryイベントをトリガーしない

HTML:

<div class="leaveModal dontgo"> 
    <h1>Where are you going? :(</h1> 
    <div class="closebutton"> 
     <i class="fa fa-times fa-lg" aria-hidden="true"></i> 
    </div> 
</div> 

はJavaScript:

$("body").on("mousemove",function(event){ 
    if (event.pageX < 100 && event.pageY < 50) { 
     $(".dontgo").fadeIn(600); 
    } 
} 

/* Close Button */ 

$(".fa-times").click(function(){ 
    $(".dontgo").fadeOut(500); 
}) 

閉じるボタンを押すたびに閉じられますが、イベントは引き続き発生します。私が私のバックボタンに向かって動くとき、それは人々のために非常に迷惑になります。

閉じるボタンを1回押した後にjQueryイベントをトリガーしないようにする方法を知っている人はいますか?

+1

あなたは 'mousemove'機能であなたがフェードアウトした後、trueに設定するbool VARを作成し、それをチェックすることができ – depperm

+0

個人的には全体の機能は無意味と少し迷惑そうです - それは一度だけ実行されている場合でも。 – j08691

+0

ユーザがホバーポップアップを閉じることを選択した場合、実行可能にする必要がありますか? – War10ck

答えて

0

$("body").off他のトリガーイベントを傷つける可能性があります。したがって、removeはオプションです。

$(".fa-times").click(function(){ 
    $(".dontgo").fadeOut(500).remove(); 
}) 
0

ボタンをクリックしたときにリスナーをオフにするにはどうすればよいですか?

$(".fa-times").click(function(){ 
    $("body").off("mousemove"); //Turn off the listener for body 
    $(".dontgo").fadeOut(500); 
}) 

EDIT:この回答のコメントで述べたようwar10ck、上記のスニペットの$("body").off();部分は、あなたのbodyにバインドされたすべてのイベントを削除します。代わりに$("body").off("mousemove");と答えて mousemoveイベントを削除するように私の答えを編集しました。

+1

このように '.off()'を使うとbody要素の***イベントごとに***をアンバインドすることに注意してください。あなたは '.off( 'mousemove');を呼び出すだけで' mousemove'を削除する方が良いでしょう。また、名前空間を指定して '.off( 'mousemover.hoverbox')'などのインスタンスだけを削除する方が良いでしょう。 – War10ck

+0

修正してください。手元にある例を考えてみると、これは問題ではありませんでしたが、この方法を使用する場合は重要な注釈であることに同意します。あなたの情報を含めるように私の答えを編集します。 – Santi

+0

タイラーに感謝します!それは動作し、私は関連する質問があります。私は電子メールの購読ポップアップを作っていますが、ほとんどのポップアップ作業として、購読しても表示されません。私はこれをどのように動作させるか分かりませんが、これはクッキーで動作すると信じています。私はJQueryのクッキープラグインやその他の方法を試しましたが、決して解決策には出ませんでした。 – xSketchy0

関連する問題