javascript - 当事件设置为外部元素时,如何检测另一个元素内部的元素?

标签 javascript jquery html

这是我的代码:

$("div").on('click', function(e){
  
    e.preventDefault(e);

  /*
  if ( clicked element is <a> element ){
  
    redirect to the href
    and return false
    
  }
  */
  
  alert("div clicked");
  
})
div{
  cursor: pointer;
  border: 1px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <p>this is a paragraph</p>
  <a href="/url">this is a link</a>
  <p>this is another paragraph</p>
</div>

我怎样才能让那个条件(在上面的代码中有注释)工作?我需要检测是否在 <div> 中单击了元素是 <a> ,然后重定向到它并死去。我该怎么做?

最佳答案

您可以使用e.target 来获取被点击的元素。要检查点击了什么标签,您可以使用 e.target.tagName

$("div").on('click', function(e) {

  e.preventDefault(e);

  if ( e.target.tagName === 'A' ) {
      var href = $(e.target).attr('href');
      console.log(href);
  }

  //e.target.tagName - Will return 'A' if <a> is clicked.

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <p>this is a paragraph</p>
  <a href="/url">this is a link</a>
  <p>this is another paragraph</p>
</div>

关于javascript - 当事件设置为外部元素时,如何检测另一个元素内部的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50889857/

相关文章:

javascript - 如果用户滚动,则出现在中间的 Div 会中断

javascript - 帮助我完成 JavaScript 测验吗?

html - float :left changes the size of next div

javascript - 单击标题上的按钮时阻止 Bootstrap Accordion 打开

javascript - HTML:当由 JavaScript 设置时,为什么 Firefox 不使用 wrap ="off"?

javascript - 单击第二个后取消选中第一个过滤器

javascript - 单击时禁用右键单击菜单

javascript - 是什么导致这些浏览器呈现问题? Z 索引冲突?定位规则?

javascript - 如何在 react 输入组件中制作基于黑名单的过滤器

javascript - 如何在AJAX成功函数中设置数据?