我希望能够区分用户是否单击了具有某个类的元素(或该类的子元素,例如一个段落),或者用户是否单击了页面中的其他位置。我使用jQuery来查看事件目标是否是特定类的元素,但是由于某些原因,这是行不通的。单击该元素时不会注册。您能看到问题出在哪里吗? (在浏览器检查器中查找控制台日志消息)

Fiddle

这是小提琴中的代码:

HTML:

<div class="redsquare"><p>red square</p></div>
<div class="redsquare"><p>red square</p></div>


的CSS

.redsquare {
  width: 100px;
  height: 100px;
  background: red;
  margin-bottom: 10px;
}


Javascript:

$(function() {

  window.addEventListener('mouseup', function(event) {

    if (!$(event.target).hasClass('.redsquare') && !$(event.target.parentNode).hasClass('.redsquare')) {

      console.log('target is outside red square');
    } else {
      console.log('target is red square');
    }

  });

});

最佳答案

jQuery的.hasClass()不需要您在类名称前加点。
尝试.hasClass('redsquare')。您可以阅读here

这是fiddle

同样,检查元素是否具有该类并将其他情况留在else块中会更直接。

10-01 07:19