Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
特定时间的JavaScript绑定事件_Javascript_Jquery_Event Listener - Fatal编程技术网

特定时间的JavaScript绑定事件

特定时间的JavaScript绑定事件,javascript,jquery,event-listener,Javascript,Jquery,Event Listener,我正在尝试实现以下功能,但遇到了一些问题。我想要的是,当用户单击某个图像时,将出现一个弹出div,其中包含有关该图像的一些信息。然后,如果用户要单击该弹出div之外的页面上的任何位置,它将简单地隐藏并删除弹出窗口 我试图做的是在将弹出div添加到页面后注册eventListener。在同一问题之后,使用jquery和without以及am进行了尝试。(我在下面列出了这两个,但一次代码中只有一个处于活动状态。) 似乎正在发生的事情是,在初次单击时立即触发事件以显示弹出窗口,因此它永远不会显示。如何

我正在尝试实现以下功能,但遇到了一些问题。我想要的是,当用户单击某个图像时,将出现一个弹出div,其中包含有关该图像的一些信息。然后,如果用户要单击该弹出div之外的页面上的任何位置,它将简单地隐藏并删除弹出窗口

我试图做的是在将弹出div添加到页面后注册eventListener。在同一问题之后,使用jquery和without以及am进行了尝试。(我在下面列出了这两个,但一次代码中只有一个处于活动状态。)


似乎正在发生的事情是,在初次单击时立即触发事件以显示弹出窗口,因此它永远不会显示。如何创建一个eventListener,它只在特定时间开始侦听这些单击?

我想您的问题在于事件传播。作为打开弹出窗口的触发器的图像会在整个DOM中弹出事件,最终到达主体。因此,淡出/删除事件与打开事件同时触发

您需要以这种方式停止传播(使用:


我的猜测是,实际上你的问题是,你的函数似乎被命名为相同的东西,所以第二个覆盖了第一个。
    createProfilePopUpEventListener: function(){
        $('body').on('click', function(){
           $('.profile_pop_up').fadeOut('fast').remove();
        });
    },

    createProfilePopUpEventListener: function(){
        var el = document.getElementsByTagName('body')[0];
        el.addEventListener("click", $('.profile_pop_up').fadeOut('fast').remove();
    },

    showPopUp: function(e){
         //creates popUp and adds it to the DOM
         this.createProfilePopUpEventListener();
    }
$('#popup_trigger').on('click', function(event){
  event.stopPropagation();
  $('.profile_pop_up').fadeIn();
});