Javascript 对单击后重新插入的元素使用Parents()

Javascript 对单击后重新插入的元素使用Parents(),javascript,jquery,Javascript,Jquery,我使用Jquery创建了一个下拉功能,其中一个事件侦听器允许我在单击下拉容器外的任何位置时关闭下拉列表,另一个事件侦听器处理子菜单项 根据设计,即使单击了子菜单项,下拉列表也应保持打开状态,并且只有在单击切换按钮或用户在下拉列表容器外单击时,下拉列表才应关闭 问题 假设general.js具有如下单击事件侦听器 $('document').on('click.namespace',function(e){ // do stuff }); 现在anotherscript.js有一个事件监听器,用

我使用Jquery创建了一个下拉功能,其中一个事件侦听器允许我在单击下拉容器外的任何位置时关闭下拉列表,另一个事件侦听器处理子菜单项

根据设计,即使单击了子菜单项,下拉列表也应保持打开状态,并且只有在单击切换按钮或用户在下拉列表容器外单击时,下拉列表才应关闭

问题

假设general.js具有如下单击事件侦听器

$('document').on('click.namespace',function(e){ // do stuff });
现在anotherscript.js有一个事件监听器,用于处理实际的子菜单单击

$('#clickbutton').on('click', function(e){ 
         // Remove all html  from inside the .dropdown container 
         // Recreate the html using another js function 
         $('.container').html(recreatedhtml);
});
当我试图识别谁是子菜单按钮click target的父对象时,就会出现问题,因为我想知道单击是在容器内部还是外部


由于单击#clickbutton会从容器中删除html并重新插入,我相信这会给parents()函数带来问题,因此parents('.dropdown')函数返回false,即使子菜单项是dropdown类的后代。

检查事件的目标

$(document).on('click.namespace',function(e){ 
   if(!$(e.target).closest(dropdownContainerSelector).length){
      // click is not in dropdown container
   }

 });

请注意,文档不是字符串,它是窗口中的全局对象

Hi,尝试了此操作后,当我将事件侦听器连接到#clickbutton子菜单链接时,它不起作用,但当我删除该事件侦听器时,它起作用。我怎样才能使两者一起工作?