2016-08-30 73 views
0

所以我一直在试图做这个事件,如果你用鼠标悬停在后退按钮附近,这个div会显示一条消息,说“你在哪里?去:(”我找到了工作,但一段时间后,就变成恼人按下按钮后不要触发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); 
}) 

每当我按下关闭按钮它会关闭,但它会继续触发事件。当我向后退按钮移动时,对于人来说变得非常烦人。

有没有人知道如何使它不触发jQuery事件后按关闭按钮一次?

+1

你可以创建你设置为true淡出后布尔var和在'mousemove'功能 – depperm

+0

检查其个人全功能似乎没有意义的,有点恼人的 - 哪怕只运行一次。 – j08691

+0

如果用户选择关闭悬停弹出窗口,它是否应该再次可执行? – War10ck

回答

0

$("body").off可能会损坏其他触发事件!所以remove是可选的。

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

点击按钮时关闭body监听器怎么样?

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

编辑:作为war10ck在这个答案的评论提到的,片断的$("body").off();部分的上方将删除绑定到您的body所有事件。我编辑了我的答案,而不是说$("body").off("mousemove");,这将删除只有 mousemove事件。

+1

请注意,使用'.off()'这样会解除*** body元素中的每个***事件。你最好通过调用'.off('mousemove');'来移除'mousemove',甚至通过命名事件的距离并只移除你的实例,比如'.off('mousemover.hoverbox')''来更好。 – War10ck

+0

正确。鉴于手头的例子,我没有把这看作是一个问题,但我同意如果使用这种方法是一个重要的注意事项。我会编辑我的答案以包含您的信息。 – Santi

+0

谢谢泰勒!它的工作原理和我有一个相关的问题。我一直在做一个电子邮件订阅弹出窗口,但作为大多数弹出窗口的工作,他们不会显示后,你订阅。我相信这适用于cookie,但我不知道如何解决这个问题。我试过JQuery cookie插件和其他方式,但从来没有找到解决方案。 – xSketchy0