gpt4 book ai didi

javascript - 检查是否单击了 div 或其子元素之一

转载 作者:行者123 更新时间:2023-11-28 18:58:27 25 4
gpt4 key购买 nike

我有一个 div 如下

<div class="parent">
<!--several child divs now-->
</div>

现在,我已经使用 AngularJS 在 body 上注册了一个点击处理程序,如下所示:

HTML:

<body ng-click="registerClick($event)">
</body>

Controller :

$scope.registerClick(e) {
//Here check if the parent div or one of its children were clicked
}

如何在我的处理程序中使用 $event 来确定是否单击了类为“parent”的 div 或其子级之一?

最佳答案

将其更改为:

$scope.registerClick(e) {
if (e.target.classList.contains('parent')){
// The .parent div is clicked
} else if (e.target.parentNode.classList.contains('parent')){
// Some child of the .parent div is clicked
} else {
var elem = e.target;

while(elem.tagName != 'body' || !elem.classList.contains('parent')){
elem = elem.parentNode;
}

if (elem.classList.contains('parent')){
console.log('DIV .parent')
} else {
console.log('Body tag reached. No .parent element found');
}
}
}

e.target 是被单击的元素。用它来确定单击了哪个元素。这是一个干净的 JavaScript 解决方案。如果可以像这样附加事件,您甚至不需要 $scope.registerClick(e) { 部分:

someDiv.onclick = function(){/* Same code as above. */}

如果您使用后一种方法,“this”指向 div,因此您可以进行一点验证。

关于javascript - 检查是否单击了 div 或其子元素之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33101767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com