首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止单击启动子项目

停止单击启动子项目
EN

Stack Overflow用户
提问于 2015-11-28 21:26:09
回答 3查看 80关注 0票数 2

我的html看起来是这样的:

代码语言:javascript
复制
<ul>
    <li class="database">Item One
        <ul>
            <li>Sub One</li>
            <li>Sub Two</li>
            <li>Sub Three</li>
        </ul>
    </li>
    <li class="database">Item Two
        <ul>
            <li>Sub One</li>
            <li>Sub Two</li>
            <li>Sub Three</li>
        </ul>
    </li>
<ul>

然后,我创建了这个JavaScript,以在单击时隐藏/显示子列表。

代码语言:javascript
复制
$(document).on('click', 'li.database', function (e) {
    e.stopPropagation();
    $(this).children('ul').children('li').toggle();
});

它可以工作,但它隐藏的列表,无论我是否单击子菜单。仅当单击根li时,如何隐藏这些项?我想最终有子项目有自己的事件时,点击。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-28 21:42:47

您可以检查e.target是否与e.currentTarget相同。

这是因为e.target是激发事件的元素,而e.currentTarget是事件侦听器附加到的元素。

Example Here

代码语言:javascript
复制
$(document).on('click', 'li.database', function (e) {
  if (e.target === e.currentTarget) {
    $(this).children('ul').children('li').toggle();
  }
});
票数 2
EN

Stack Overflow用户

发布于 2015-11-28 21:28:57

检查单击了哪个targete.target

而是在子项的单击事件中使用e.stopPropagation()

票数 2
EN

Stack Overflow用户

发布于 2015-11-28 21:29:06

尝试创建一个id标记并引用它,而不是类名。这样,您就可以通过id将数据库分开。

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

https://stackoverflow.com/questions/33976620

复制
相关文章

相似问题

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