javascript - .click() 在嵌套在 .click() 元素内部的元素上

标签 javascript jquery

我正在尝试在 Accordion 内部创建一个 Accordion ......并且我有点挣扎。

本质上,我有一个 div .applicant,单击它会添加一个 .expand 类,它将高度设置为 auto,但是,在 内部.applicant div,我有另一个 div .applicant-child,它应该做同样的事情,并且确实......但是,.applicant 在您关闭时关闭单击.applicant-child,这意味着您必须再次单击.applicant才能打开查看嵌套元素。

这是我的代码:

HTML

    <div class="row">
        <div class="col-sm-12">
            <div class="applicant">
                <p><b>PS4 Tournaments</b></p>
                <div class="applicant-child">
                    <p>lalal</p>
                    <p>lalal</p>
                </div>
            </div>
        </div>
    </div>

jQuery

    $('.applicant').click(function(){
        if ($(this).hasClass('expand')) {
            $(this).removeClass('expand');
        } else {
            $( this ).addClass('expand');
        }
    });

    $('.applicant-child').click(function(){
        if ($(this).hasClass('expand')) {
            $(this).removeClass('expand');
        } else {
            $( this ).addClass('expand');
        }
    });

我可以简单地从 .appliant 中删除 $(this).removeClass('expand');,但我们将显示大量数据,因此并不理想。

如何解决这个问题?

提前致谢:)

最佳答案

这只是事件冒泡的预期行为。 看这个link关于 jQuery 如何禁用 click-Event 来冒泡 DOM 并触发父元素上的事件。

基本上,您只需这样做:

$('.applicant-child').click(function(event){
    event.stopPropagation();
    if ($(this).hasClass('expand')) {
        $(this).removeClass('expand');
    } else {
        $( this ).addClass('expand');
    }
});

关于javascript - .click() 在嵌套在 .click() 元素内部的元素上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770701/

相关文章:

javascript - 如何将数据映射到 map (Google map )上的邮政编码?

javascript - 尝试为 div 创建点击方法,在 IE6 中不起作用?

javascript - 为什么 JSON.parse(JSON.stringify(obj)) 删除 obj 的属性

javascript - 如何通过 AirWatch 浏览器调试在 iOS 中运行的 Web 应用程序?

jquery - 在新窗口中打开 jquery get 请求

javascript - 更改了 DOM 元素标签,脚本不再有效

javascript - 平滑的 Canvas 线和光标起点

javascript - Ember.js 框架可以在没有 Node.js 的情况下使用吗?

javascript - jquery 输入验证

jquery - 如何通过触发更改事件来调用与下拉菜单关联的函数