【问题标题】:Using Parents() on an element which gets reinserted on click在单击时重新插入的元素上使用Parents()
【发布时间】:2020-09-18 00:17:35
【问题描述】:

我使用 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);
});

当我尝试识别子菜单按钮点击目标的父级是谁时,会出现问题,因为我想知道点击是在容器内部还是外部。

由于单击#clickbutton 会从容器中删除 html 并重新插入它,我相信这会导致 parents() 函数出现问题,因此即使子菜单项是下拉类。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    检查事件的目标

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

    注意document不是字符串,它是window内的全局对象

    【讨论】:

    • 嗨,试过这个,但它不起作用,而我有一个事件侦听器附加到#clickbutton 子菜单链接但是当我删除该事件侦听器时它可以工作。我怎样才能让两者一起工作?
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2014-08-19
    • 2018-09-26
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多