面试题答案
一键面试事件委托原理
事件委托是利用事件冒泡的特性,将子元素的事件委托给父元素来处理。这样只需要在父元素上绑定一个事件监听器,而不是为每个子元素都绑定事件,从而减少事件绑定数量,提高性能。
Vue代码示例
<template>
<div @click="handleClick">
<div v-for="(item, index) in list" :key="index">
{{ item }}
</div>
</div>
</template>
<script>
export default {
data() {
return {
list: Array.from({ length: 1000 }, (_, i) => `Item ${i + 1}`)
};
},
methods: {
handleClick(event) {
// 判断点击的是否是子元素
if (event.target.tagName === 'DIV') {
const itemIndex = Array.from(this.$el.children).indexOf(event.target);
const clickedItem = this.list[itemIndex];
console.log(`Clicked item: ${clickedItem}`);
}
}
}
};
</script>
在上述代码中:
- 在父
div
上绑定了click
事件,即@click="handleClick"
。 - 列表项通过
v-for
指令循环渲染。 - 在
handleClick
方法中,通过判断event.target
的标签名来确定是否点击了列表项,如果是,则计算出点击的列表项的索引,并获取对应的列表项数据进行处理。