javascript - Jquery click - 认为它是父元素,而不是子元素

标签 javascript jquery parent children

当我单击 div 内的子元素(“butMedWhite”类)时 - jquery 认为我正在单击父元素(“.alternative”) - 即使我将“this”转储到控制台中说我点击了“alternative”类(参见下面的代码)-而不是“butMedWhite”类-有人知道为什么吗? 这是 HTML:

<div class="alternative _activeCategory">
    <div class="alternative_inner"></div>
    <div class="expandable" style="display: block;">
        <div class=" criteriaContainer">
            <a class="butMedWhite altCreator">add rule</a>
        </div>
    </div>
</div>

这是 jquery:

$('.altExpander').on('click', '.alternative', function(e) {
                    console.log(this);
                    if(!$(this).hasClass('_activeCategory')){
                        expandCategory($(this));
                    }else{
                        closeCategory();
                    }
                });

感谢您的帮助!

最佳答案

jQuery 为您的回调提供绑定(bind)事件处理程序的元素作为上下文,就像 native DOM 函数一样。

如果您想要单击的元素,请不要使用 this 而是使用 e.target :

$('.altExpander').on('click', '.alternative', function(e) {
     var clicked = $(e.target);
     console.log(clicked);
     if(!clicked.hasClass('_activeCategory')){
            expandCategory(clicked);
     }else{
            closeCategory();
     }
});

关于javascript - Jquery click - 认为它是父元素,而不是子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18428440/

相关文章:

c# - 如何将东西添加到 C# 中的现有基类中?

javascript - 修复嵌套列上的 Bootstrap 填充

javascript - SAPUI5 在 Controller 中获取 OData 模型

jquery - 淡出 div 并替换为 1

javascript - 如何在按键时获取 html 表集中的行特定列数据

c# - 将子控件 MouseMove 事件无缝转发给父控件

javascript - 获取表单元素作为关联数组?

javascript - React-native 中的 For 循环仅渲染索引[0]

php - 从显示 :block 触发 PHP 进程

jquery - 如果选中复选框,则将类添加到父元素