javascript - 如何仅在 JavaScript/jQuery 中没有默认值时才执行操作?

标签 javascript jquery events jquery-events

我被要求点击 div 中的任何地方执行特定操作(比如折叠它)除非点击是在链接、按钮等上...

基本上,我想要 event.preventDefault() 的逆过程。

有没有好的简单方法来做到这一点?

我在这里寻找通用解决方案;我不想对 div 的内容做太多假设。

可能看起来像:

<div id="click_me>
<p>Clicking here should do stuff
   <a href="http://stackoverflow.com">but not here, nor on the following image</a>
   <a href="/xyz"><img url="/icon.png"/></a>
   imagine buttons... input areas, ...
</p>
</div>

使用以下 JavaScript:

$("#click_me").click(function(){
  if(black_magic) {
    $("#click_me").toggleClass("collapsed");
  }
});

最佳答案

您只需确保事件 target 不是链接或按钮即可。

$('#click_me').click(function(e) {
  interactive = 'a, button, input, textarea, video, map, object';
  if($(event.target).closest(interactive).length == 0) ) {
    $("#click_me").toggleClass("collapsed");
  }
});

关于javascript - 如何仅在 JavaScript/jQuery 中没有默认值时才执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152075/

相关文章:

javascript - 从内容脚本重定向到 chrome 扩展 URL?

jquery - 显示模态后将焦点设置为控制

javascript - 事件发射器,对象不是函数

javascript - 如何在 jquery 选项卡的当前事件选项卡上触发 ('click' )

javascript - 如何使用 Jquery 在用户清除文本字段并将焦点移出文本字段时触发事件?

javascript:如何捕获对象的任何缺失的功能/属性

javascript - Jquery Validator 似乎不起作用

javascript - 从表行到详细信息的 AJAX 请求

c# - IE 11 打开旧的覆盖的 PDF 而不是新的 PDF?

typescript - 在 TypeScript 类中创建自定义事件