我需要实现点击外部隐藏下拉指令,所以我有这样的代码:
$(document).click(function(e) {
var selector = $(e.target).closest('.time-selector');
if (!selector.length) { // || !selector.is(element)) {
if ($scope.$$phase) {
$scope.show = false;
} else {
$scope.$apply(function() {
$scope.show = false;
});
}
}
});
但是当我点击不同的 .timer-selector
元素时它不起作用(不隐藏),我尝试测试 !selector.is(element)
但这不起作用。
那么如何测试我的 jQuery 选定元素是否与 angular 指令元素是同一个 DOM 节点?
不知道这是否相关,但我的指令没有replace
。
最佳答案
找到解决方案,在我的例子中,我的元素是我的指令标签而不是 .time-selector
,所以这段代码解决了问题:
$(document).click(function(e) {
var selector = $(e.target).closest('.time-selector');
if (!element.find('.time-selector').is(selector)) {
if ($scope.$$phase) {
$scope.show = false;
} else {
$scope.$apply(function() {
$scope.show = false;
});
}
}
});
关于javascript - 如何比较 Angular 元素与 jQuery 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24678857/