javascript - 获取被点击的元素

标签 javascript jquery angular

我目前需要更具体地说明类切换的功能,该类切换只需要发生在被单击元素内的子元素中。我有一个“.node”类,当单击它时,它应该在它的子“.node-dropdown”上切换一个类。我有多个带有 (click)="showNodeDropdown"的节点,并且当前所有节点下拉列表都同时隐藏或显示。

HTML

<div class="node" *ngIf="authService.isInternalUser()" (click)="showNodeDropdown()">
<span class=" fa fa-clock-o node-icon"></span>
<p>Menu Title</p>

请记住,我的页面中有多个使用 (click)="showNodeDropdown()"的元素,这只是一个示例。

JS

showNodeDropdown() {
    $('.node-dropdown').toggleClass('hidden');
}

我尝试将我的JS更改为类似$(this).children('.node-dropdown).toggleClass('hidden');

但是(this)当前仅定义为“object Object”

有没有办法获取被单击的元素并将其设置为(this),以便我只能在其子元素上切换?预先感谢您的帮助。

最佳答案

以下是两种获取点击元素的 Angular 方法:

  1. 将事件目标传递给处理程序:
    <div (click)="showNodeDropdown($event.target)" ... >
  • 定义模板引用变量,并将其传递给处理程序:

    <div #myDiv (click)="showNodeDropdown(myDiv)" ... >
    
  • 在这两种情况下,事件处理程序都可以写为:

    showNodeDropdown(element: HTMLElement) {
        let nodes = element.querySelectorAll(".node-dropdown");
        for (let i = 0; i < nodes.length; i++) {
            nodes[i].classList.toggle("hidden");
        }
    }
    

    或者,使用 jQuery:

    showNodeDropdown(element: HTMLElement) {
        $(element).children(".node-dropdown").toggleClass("hidden");
    }
    

    关于javascript - 获取被点击的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48994514/

    相关文章:

    javascript - 带有 addClass 和 removeClass 的 jQuery CSS 动画

    javascript - 如何使用angularjs通过单击按钮将图像下载到我们的本地?

    javascript - .then() 永远不会在 Observable.toPromise() 上调用

    php - 如何使用ajax一键插入两行Laravel

    angular - 在 NgModule 中使用实例化依赖

    javascript - 在 {{}}(花括号)内使用函数调用是一种好习惯吗?

    javascript - 添加和删​​除下拉列表

    javascript - actionscript p2p - 聊天如何创建多个连接并向所有/任何连接发送消息

    java - 数据表参数为 Null ,导致 NumberFormatException :Null. 有解决方案吗?

    javascript - 当有多个实例时,针对单击元素的 jQuery 问题