首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.click()在.click()元素内嵌套的元素

.click()在.click()元素内嵌套的元素
EN

Stack Overflow用户
提问于 2018-08-09 15:20:31
回答 3查看 57关注 0票数 0

我想在手风琴里面造个手风琴.我还有点挣扎。

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

这是我的代码:

代码语言:javascript
复制
    <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

代码语言:javascript
复制
    $('.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');
        }
    });

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

我该怎么解决这个问题?

(预先谢谢:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-09 15:24:57

这只是一件引发人们期待的行为的事件。请参阅链接 on jQuery关于如何禁用click-Event以使DOM冒泡并触发父元素上的事件。

基本上,你只需要这样做:

代码语言:javascript
复制
$('.applicant-child').click(function(event){
    event.stopPropagation();
    if ($(this).hasClass('expand')) {
        $(this).removeClass('expand');
    } else {
        $( this ).addClass('expand');
    }
});
票数 1
EN

Stack Overflow用户

发布于 2018-08-09 15:24:14

你想防止冒泡。冒泡意味着,您所响应的事件正将DOM传递到父对象,直到它到达窗口。

请查看"event.stopPropagation()“方法,该方法将阻止任何后续侦听器作出反应。

票数 0
EN

Stack Overflow用户

发布于 2018-08-09 15:27:53

在单击处理程序上,如果您通过param:

代码语言:javascript
复制
$('.applicant').click(function(event){
    console.log(event.target);
    if ($(this).hasClass('expand')) {
        $(this).removeClass('expand');
    } else {
        $( this ).addClass('expand');
    }
});

您可以使用event.target来检查您是要单击父级还是子级,并决定从那里采取什么操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51770701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档