vue中$event使用之获取当前元素及相关元素
作者:酷酷的橙007
这篇文章主要介绍了vue中$event使用之获取当前元素及相关元素,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
$event使用之获取当前元素及相关元素
对于常见的事件,比如点击事件,第一个参数是事件本身,另外,在实际项目中,我们可能需要获取事件执行的元素或相关元素,在这里总结一下。
例如:点击事件
<button @click = “clickfun($event)”>点击</button>
通过事件获取元素:
methods: {
	clickfun(e) {
		// e.target 是你当前点击的元素
		// e.currentTarget 是你绑定事件的元素
	    # 获得点击元素的前一个元素
	    e.currentTarget.previousElementSibling.innerHTML
	    # 获得点击元素的第一个子元素
	    e.currentTarget.firstElementChild
	    # 获得点击元素的下一个元素
	    e.currentTarget.nextElementSibling
	    # 获得点击元素中id为string的元素
	    e.currentTarget.getElementById("string")
	    # 获得点击元素的string属性
	    e.currentTarget.getAttributeNode('string')
	    # 获得点击元素的父级元素
	    e.currentTarget.parentElement
	    # 获得点击元素的前一个元素的第一个子元素的HTML值
	    e.currentTarget.previousElementSibling.firstElementChild.innerHTML
	}
}
vue关于$event的通俗理解
通过对$event的多次打印结果,可见:
- $event是指当前触发的是什么事件(鼠标事件,键盘事件等)
 - $event.target则指的是事件触发的目标,即哪一个元素触发了事件,这将直接获取该dom元素
 
下面是例子:
<button @click="console.log($event)" name="哈哈">单击</button>
由于鼠标点击,所以触发鼠标单击事件,打印出来的是事件,如下图:

展开后确实有target属性,且target说明了这是button:

实际上展开target就可以看到更具体的信息,这里不做演示,其实也就是这个button的各种属性等等,直接就是这dom元素。
且看下面这段代码,直接打印出target:
<button @click="console.log($event.target)" name="哈哈">单击</button>

可见打印出来的值就是这个元素本身
我们可尝试获取其属性值:
<button @click="console.log($event.target.name)" name="哈哈">单击</button>

所以我们可以利用$event进行一些函数传值之类的特殊操作
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
