Javascript 无法在AngularJS中获取Internet Explorer 11中事件目标的父级
我试图找出一个元素是否在另一个元素中。我不能用InternetExplorer11中的最接近者来做这件事。因此,我采用了创建递归搜索DOM树函数的方法。但是,我也不能简单地使用jQuery的Javascript 无法在AngularJS中获取Internet Explorer 11中事件目标的父级,javascript,jquery,angularjs,internet-explorer-11,jquery-events,Javascript,Jquery,Angularjs,Internet Explorer 11,Jquery Events,我试图找出一个元素是否在另一个元素中。我不能用InternetExplorer11中的最接近者来做这件事。因此,我采用了创建递归搜索DOM树函数的方法。但是,我也不能简单地使用jQuery的event.target属性在angular js控制器中获取InternetExplorer 11中目标事件元素的父元素。这段代码不起作用,因为无论我单击什么,findClosestParent中的startElement.parentElement始终为空。另外,startElement.parentNo
event.target属性
在angular js控制器中获取InternetExplorer 11中目标事件元素的父元素。这段代码不起作用,因为无论我单击什么,findClosestParent
中的startElement.parentElement
始终为空。另外,startElement.parentNode
为空<代码>事件.currentTarget.parentNode为空。我试过很多东西。什么都不管用。我尝试过的另一件事是,我不能简单地向我试图选择的div添加一个id,并使用一个纯香草的jsgetElementById
query选择器,因为这些元素被抽象到第三方库中。我非常希望能够使用eventtarget或类似的东西来获得IE11中的dang元素
我认为这可以归结为这样一个事实,即根据IE,
parentElement
是“仅在Element
上受支持的”。它就是这么说的。。。这意味着我认为internet explorer不认为事件。target
是一个“元素”这里是一个使用angularjs和jQuery核心的简单解决方案
尝试使用日历
类单击元素内外的某个位置
(函数(){
"严格使用",;
角度模块('app',[]);
有棱角的
模块('应用程序')
.controller('myController',['$scope',函数($scope){
$(文档)。在('click',函数($event){
var nativeElement=$event.target;
if($(nativeElement).closest('.calendar').length){
log(“在日历中”);
}
否则{
log(“日历之外”);
}
});
}])
})();代码>
.calendar{
利润率:20px;
填充:20px;
边框:2件纯蓝;
}
.小部件{
利润率:20px;
填充:20px;
边框:2倍纯绿;
}
历法
不是日历
我的回答最终解决了你的问题吗?
const findClosestParent = (startElement, fn) => {
const parent = startElement.parentElement;
if (!parent) return undefined;
return fn(parent) ? parent : findClosestParent(parent, fn);
};
$document.on('click', event => {
let target = event.target;
if (findClosestParent(target, parent => parent.classList.contains('.calendar')) {
// do some things
}
});