Jquery 如何创建当用户单击元素时触发的事件(例外情况是2个子元素)

Jquery 如何创建当用户单击元素时触发的事件(例外情况是2个子元素),jquery,Jquery,如何创建当用户单击元素时触发的事件(例外情况是2个子元素)。 Html: 但是,如果我点击cc btn会触发警报。问题是您已将事件侦听器附加到cc bannerdiv,因此即使单击子元素,它也会始终注册单击 尝试检查单击处理程序中的事件目标。如果目标类与不希望单击的元素匹配,则返回: $('.cc-banner').on("click", function (e) { var $target = $(e.target); if($target.hasClass('cc-link') ||

如何创建当用户单击元素时触发的事件(例外情况是2个子元素)。 Html:


但是,如果我点击
cc btn

会触发警报。问题是您已将事件侦听器附加到
cc banner
div,因此即使单击子元素,它也会始终注册单击

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

$('.cc-banner').on("click", function (e) {
  var $target = $(e.target);
  if($target.hasClass('cc-link') || $target.hasClass('cc-dismiss')) return;
  alert("HI!");
});

如果将单击事件绑定到所有内容,则需要检查目标以处理这些情况

jsfiddle-


}))

您应该通过事件对象并检查目标。Pseudo看起来像“单击事件(event){if(event.target.hasClass(cc btn)return;dotherest}”
jQuery('.cc-window.cc-banner').not(jQuery(".cc-link").not(jQuery(".cc-btn.cc-dismiss"))).on("click", function () {
        alert("HI!");
    });
$('.cc-banner').on("click", function (e) {
  var $target = $(e.target);
  if($target.hasClass('cc-link') || $target.hasClass('cc-dismiss')) return;
  alert("HI!");
});
$('.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;
    }