javascript - Vanilla Javascript如何检查点击的元素是否是最后一项
问题描述
我想检查当前单击的元素是否是最后一个元素。这是我到目前为止得到的:
<div class="item" @click="onClick"> Item 1 </div>
<div class="item" @click="onClick"> Item 2 </div>
<div class="item" @click="onClick"> Item 3 </div>
<div class="item" @click="onClick"> Item 4 </div>
然后我的javascript:
onClick(e){
let clicked = e.target;
let items = document.querySelectorAll('.item');
let lastchild = items[items.length - 1];
if(clicked === lastchild) {
// do something
}
}
但由于某种原因,这不起作用。我究竟做错了什么?
有人可以帮我吗?
解决方案
您的代码仅在页面上没有其他.item
元素时才有效,因为document.querySelectorAll('.item')
返回文档中与选择器匹配的所有元素。
如果您更改选择器的范围,使其仅查询元素的直接父节点,那么它将起作用:请参见下面的示例。
new Vue({
el: '#app',
methods: {
onClick(e) {
console.log('Item clicked');
let clicked = e.target;
let items = clicked.parentNode.querySelectorAll('.item');
let lastchild = items[items.length - 1];
if (clicked === lastchild) {
console.log('Last child clicked');
}
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div class="container">
<div class="item" @click="onClick"> Item 1 </div>
<div class="item" @click="onClick"> Item 2 </div>
<div class="item" @click="onClick"> Item 3 </div>
<div class="item" @click="onClick"> Item 4 </div>
</div>
<hr />
<div class="container">
<div class="item" @click="onClick"> Item 1 </div>
<div class="item" @click="onClick"> Item 2 </div>
<div class="item" @click="onClick"> Item 3 </div>
<div class="item" @click="onClick"> Item 4 </div>
</div>
<hr />
<div class="container">
<div class="item" @click="onClick"> Item 1 </div>
<div class="item" @click="onClick"> Item 2 </div>
<div class="item" @click="onClick"> Item 3 </div>
<div class="item" @click="onClick"> Item 4 </div>
</div>
</div>
推荐阅读
- google-cloud-shell - --min-instances google cloud function cloud shell 命令错误
- automation - 我想找到自输入 pine script 以来的最高价格?
- java - 推送通知 Respose {"message_id":1367857655239128169} 无法获取通知
- typescript - 反应本机调试器:“错误:ENOENT:没有这样的文件或目录”
- php - MOODLE:聚合h5p资产是什么意思?
- javascript - 是否可以允许用户通过 HTML/javascript 表单将视频上传到他们的频道?
- flutter - 在颤振和管理路线中给出路线名称的最佳方法是什么?
- python - Airflow - 使用 jinja 宏作为变量来创建动态 DAG
- next.js - 在 Next js 中使用脉轮 UI 中的字体
- c - 这个 struct node **p 在做什么?