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



我使用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((函数带来问题,因此即使子菜单项是下拉类的子菜单项,parents('.dropload'(函数也会返回false。

检查事件的目标

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

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

最新更新