如何在为动态内容添加事件监听器时检查父类(和祖父类)?
如何在为动态内容添加事件监听器时检查父类(和祖父类)?
如何确保所点击的元素具有带有特定类的父元素或祖父元素?
document.getElementById("app").innerHTML = `我是一个标题
我是一个副标题
你好,我是一个段落
再见 `; document.addEventListener("click", function(e) { // 伪代码开始 // 如果(clicked e.target是或具有带有类名为"dynamic"的父元素(或祖父元素或曾祖父元素)) // (因此在动态div中的任何位置单击(段落、标题和副标题)都会触发操作) // 伪代码结束 });
问题的原因是需要在给动态内容添加事件监听器时,检查其父级(和祖父级)的类。解决方法是使用递归函数来查找父级元素的类。
下面是解决方法的具体步骤:
1. 创建一个名为findParent的函数,该函数接受一个参数el,代表当前元素。
2. 在函数内部,使用条件语句判断如果当前元素的tagName为'BODY',则返回false,表示没有找到目标类。
3. 如果当前元素的父级元素的className中包含'myClass',则返回true,表示找到目标类。
4. 如果以上条件都不满足,则递归调用findParent函数,参数为当前元素的父级元素。
5. 在点击事件处理程序的开始处,调用findParent函数并将事件的目标元素(e.target)作为参数传入。
6. 如果findParent函数返回true,则执行需要执行的操作。
以上是如何检查父级(和祖父级)的类来给动态内容添加事件监听器的方法。