javascript - <div> 中的 jQuery onClick,忽略其中的 <a> 元素

标签 javascript jquery html

我有一个非常基本的 HTML 布局,如下所示;

    <div class="module">
        <div class="module-header">
            <h2>Heading</h2>
            <a title="a" href="/" class="btn">Link</a>
        </div>
        <div class="module-body">
            <p>Boy content here.</p>
        </div>
    </div>

我有一些 jQuery 可以在用户单击模块标题 div 时切换模块主体 div,如下所示:

$('body').on("click", '.module-header', function(event) { 
    $('.module-body', $(this).parent()).slideToggle(300);       
});

我遇到的问题是,当用户单击模块 header 中的链接时,切换动画会在链接触发前运行几分之一秒。是否有选择器或我可以使用的其他方法,以便在用户单击链接时不会触发 onClick 事件?

最佳答案

根据您的最后一段,我认为您的页眉中有一个链接,您希望允许用户在没有 module-header 的情况下单击该链接的点击处理导致 module-body切换。

为此,您需要在 <a> 所在的位置拦截事件单击,并使用 stopPropagation :

$('body').on("click", '.module-header a', function (event) { 
  event.stopPropagation();
  return true;
});

这将允许您的链接被点击而事件不会冒泡到 module-header。的点击处理程序。怪癖模式有一个 useful article .

关于javascript - <div> 中的 jQuery onClick,忽略其中的 <a> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12038913/

相关文章:

javascript - 如何使用 ng-options 在选择框中选择默认时间值

javascript - 使用 php/javascript(ajax) 将数据库(SQL) 中的多行显示到网站前端

javascript - 使用 jquery 将文本发送到 twitch.tv 聊天框

javascript - "No data available in table"VueJS

html - 跨源请求被 Firefox 上的 HTML5 缓存 list 阻止

html - img srcset 和大小无法正常工作

javascript - 为什么我的代码中的 Javascript 未检测到夏令时?

javascript - MySQL 在数据库中存储数据

javascript - 结合 Google Maps MarkerClusterer v3 和视口(viewport)标记管理

html - https 页面中的 http 内容