javascript - 事件监听器以确定单击的目标是否是特定类的元素

标签 javascript jquery html

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

参见 Fiddle

这是 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 block 中会更直接。

关于javascript - 事件监听器以确定单击的目标是否是特定类的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423918/

相关文章:

javascript - jQuery 隐藏父级但不隐藏子级

javascript - 如何依次淡出和淡入div

javascript - 视差定位问题 Bootstrap 4

javascript - 使用 webpack 捆绑 NodeJS/TypeScript 应用程序的好处

javascript - typescript crypto-js 如何使用 sha256 算法和 key 对数据进行哈希处理

javascript - 更改特定元素的 Bootstrap 弹出窗口位置

javascript - 如何检查javascript中以空格结尾的字符串?

jquery - CSS Bootclass 到谷歌翻译

html - CSS 简单使我的背景 100%(自动调整浏览器)?

javascript - jQuery/PHP 表单提交意外行为