首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建事件,当用户点击元素时触发(2个子元素除外)

如何创建事件,当用户点击元素时触发(2个子元素除外)
EN

Stack Overflow用户
提问于 2018-08-24 00:21:01
回答 2查看 30关注 0票数 0

如何创建事件,当用户点击元素时触发(2个子元素除外)。Html:

代码语言:javascript
复制
<div class="cc-window cc-banner cc-type-info cc-theme-block" style="">
    <span id="cookieconsent:desc" class="cc-message">This website uses cookies to improve your experience. To learn more, read our Privacy Policy. <a class="cc-link">Learn more</a></span>
    <div class="cc-compliance">
        <a class="cc-btn cc-dismiss">I ACCEPT</a>
    </div>
</div>

我试过了

代码语言:javascript
复制
jQuery('.cc-window.cc-banner').not(jQuery(".cc-link").not(jQuery(".cc-btn.cc-dismiss"))).on("click", function () {
        alert("HI!");
    });

但是如果我点击cc-btn就会触发警报

EN

回答 2

Stack Overflow用户

发布于 2018-08-24 00:29:04

问题是您已经将事件侦听器附加到cc-banner div,所以即使您单击子元素,它也始终会注册单击。

尝试检查单击处理程序中的事件目标。如果目标类与您不想单击的元素匹配,则返回:

代码语言:javascript
复制
$('.cc-banner').on("click", function (e) {
  var $target = $(e.target);
  if($target.hasClass('cc-link') || $target.hasClass('cc-dismiss')) return;
  alert("HI!");
});
票数 0
EN

Stack Overflow用户

发布于 2018-08-24 00:34:32

你有你的点击事件绑定到所有的东西,你需要检查目标来处理情况。

jsfiddle - https://jsfiddle.net/xpvt214o/668326/

代码语言:javascript
复制
$('.cc-window.cc-banner').on("click", function (e) {
    var t = $(e.target);
    if(!t.hasClass("cc-btn")){
        alert("I did not click on '.cc-btn'")
    } else {
        return;
    }

});

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

https://stackoverflow.com/questions/51990254

复制
相关文章

相似问题

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