【发布时间】:2015-06-24 03:53:42
【问题描述】:
我正在尝试检测点击是否指向特定 div 之外。为此,我将单击事件绑定到整个文档并测试目标是否是我的 div 的子项,如下所示:
var _div = $('myselector');
document.bind('click touchstart', function (event) {
if (_div.find(event.target).length === 0) {
callback();
}
});
它在大多数情况下都可以正常工作,但在某些情况下会失败。失败的具体情况是内部带有影子 DOM 的目标 div:
当我点击 div 内的某个区域时,我有这个 event.target :
<div class="row btnActions">
::before
<a class="link pull-left ng-binding" style="" ng-click="deleteAllFilters()">
Supprimer
</a>
<button type="button" class="btn btn-primary btn-sm pull-right ng-binding" ng-click="validate()">
Valider
</button>
::after
</div>
这实际上在我的 _div 元素内,但是 _div.find(event.target) 返回空数组,当我尝试请求 _div 时。 find('.btnActions') 它返回给我这个:
<div class="row btnActions">
<a class="link pull-left ng-binding" style="" ng-click="deleteAllFilters()">
Supprimer
</a>
<button type="button" class="btn btn-primary btn-sm pull-right ng-binding" ng-click="validate()">
Valider
</button>
</div>
不同的是最后没有shadow DOM,所以我认为jquery找不到里面有伪元素的元素。有谁知道如何让 _div.find(event.target) 返回好的东西?
【问题讨论】:
标签: jquery html jquery-selectors pseudo-element shadow-dom