【问题标题】:Capturing clicks outside DOM element捕获 DOM 元素外部的点击
【发布时间】:2014-10-18 11:32:51
【问题描述】:

我想捕获 HTML 标记之外的点击。例如我有这个 HTML:

<body> 
 <div>
  <ul>
   <li id="button">
   </li>
  </ul>
 </div>
</body>

#button 是页面中间的最小方块。一旦用户在外面点击,就会发生什么,点击里面,什么都不会发生。

由于事件传播,这个 JS 不起作用:

jQuery('*').not('li#button').click(...);

所以我的点击事件最终会在触发事件的 ul、div 和 body 上触发。 我不能用这个:

jQuery('*').click(function(e) {
 e.stopPropagation();
 if(e.(...)) {}
})

因为页面上的其他事件停止工作。

实现这一目标的其他方法是什么?

【问题讨论】:

标签: jquery events dom


【解决方案1】:
$(document).bind('click', function(e) {
    if($(e.target).closest('#button').length == 0) {
        // yourlogic
    }
});

同时检查How to detect a click outside an element?

【讨论】:

    【解决方案2】:
    $(document).click(function(e){
    e.stopPropagation();
    if($(e.Target).attr(id) != "button"){
        // Your logic
        }
    });
    

    【讨论】:

    • 下次请解释您的答案并正确格式化您的代码
    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多