vue点击事件时父、子、兄弟元素获取与操作(DOM 元素对象)

在vue的点击事件中,有许多东西需要使用javascript的语句来进行操作,
例如html节点信息的获取,以及相关节点的操作等

<button @click=f_click($event)> 测试点击 </button>

HTML DOM 节点

在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 :

  • 文档本身就是一个文档对象
  • 所有 HTML 元素都是元素节点
  • 所有 HTML 属性都是属性节点
  • 插入到 HTML 元素文本是文本节点
  • 注释是注释节点

这里记录vue点击事件的节点信息获取与操作:

methods: {
    f_click: function(event){
        // 当前点击的元素
        event.target;
        // 绑定事件的元素
        event.currentTarget;
        // (target与currentTarget的区别主要体现在使用事件委托时,发生事件委托时,
        // 点击的元素与绑定事件的元素非同一元素,反之不发生事件委托时,两者相同,是同一元素)

        // 获得绑定事件元素的前一个节点信息(包含元素节点、属性节点、文本节点、注释节点)
        event.currentTarget.previousSibling;
        // 获得绑定事件元素的前一个元素节点(只包含元素节点,只有html内容)
        event.currentTarget.previousElementSibling;
        // 下一个元素信息获取使用 nextSibling、nextElementSibling

        // 获得绑定事件元素的父节点信息
        event.currentTarget.parentNode;
        // 获得绑定事件元素的父级元素
        event.currentTarget.parentElement;

        // 获得绑定事件元素的第一个子节点信息
        event.currentTarget.firstChild;
        // 获得绑定事件元素的第一个子元素
        event.currentTarget.firstElementChild;

        // 获得绑定事件元素中id为ceshi的元素集合
        event.currentTarget.getElementById("ceshi");
        // 获得绑定事件元素中class为ceshi的元素集合
        event.currentTarget.getElementsByClassName("ceshi");

        // 获得绑定事件元素的的内容(类似jquery的text())
        event.currentTarget.textContent;
        // 获得绑定事件元素的的内容(类似jquery的html())
        event.currentTarget.innerHTML;
        // 获得绑定事件元素的ceshi属性值(类似jquery的attr('ceshi'))
        event.currentTarget.getAttribute("ceshi");

        // 删除class属性某个值(类似jquery的removeClass)
        event.currentTarget.parentNode.getElementsByClassName('active')[0].classList.remove("active")
        // 向class属性中添加值(类似jquery的addClass)
        event.currentTarget.classList.add("active")

        // 点击删除当前元素
        event.currentTarget.parentElement.removeChild(event.currentTarget);
        // 点击删除当前元素的父级元素
        event.currentTarget.parentElement.parentElement.removeChild(event.currentTarget.parentElement);
    }
}

冯奎博客
请先登录后发表评论
  • latest comments
  • 总共0条评论