【问题标题】:Does element.appendChild(node) applies properties of parent node to child node?element.appendChild(node) 是否将父节点的属性应用于子节点?
【发布时间】:2015-10-03 01:28:58
【问题描述】:

我是 HTML 和 JS 的新手。 需要创建动态展开折叠列表。 var parentId = document.getElementById("ABCD") parentId.setAttribute("数据切换","折叠") parentId.setAttribute("数据目标","#collapse1") var tag = document.createElement("ul"); tag.setAttribute("id","collapse1") tag.appendChild(document.createTextNode("PQR")) parentId.appendChild(标签)

尝试列表为- A B C D 二维码

所以在这种情况下,当我单击 ABCD 时,PQR 会展开/折叠。 但问题在于点击 PQR,它又被折叠了。 那么 parent 的属性是否也适用于子节点?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    并不是它获取它的父级的属性,这与事件的处理方式有关,特别是event bubbling。当你点击一个子元素时,如果你点击的所有父元素都会触发一个点击事件

    要在单击附加元素时取消冒泡事件,您需要在新元素的单击处理程序中 event.stopPropagation()

    添加它们后,请执行以下操作

    // tag.appendchild code goes here, then do the following
    
    document.querySelector("#collapse1").onclick=function(event){
        event.stopPropagation();
    }
    

    另外,我应该提一下,使用jQuery,这一切都会轻松 10 倍

    【讨论】:

    • 谢谢,但我可以禁用它吗?我可以将特定的另一个事件注册到子元素吗?
    • 我更新了我的答案,你可以用event.stopPropagation停止它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    相关资源
    最近更新 更多