有没有办法检测何时从DOM元素中删除CSS类?
我有一个<ul>
,我需要在<ul class="open">
移除open
类时捕获。
任何在Angular或jQuery中执行此操作的方法
答案 0 :(得分:1)
如果您正在讨论监视类属性何时更改而没有任何修改它的帮助,那么唯一的方法是:
完全使用CSS解决您的问题(删除类时CSS样式会自动更改)
使用MutationObserver(仅限现代浏览器中),您可以注册对该特定属性更改的兴趣。不幸的是,在IE 11之前的IE中不支持MutationObservers。
如果您更具体地了解您正在尝试完成的内容和/或正在更改类名的代码,那么我们可能也会提供其他一些想法。
答案 1 :(得分:1)
您可以为此
编写自定义指令app.directive("isNotOpen", function(){
var linkFunction = function(scope, element, attrs){
scope.$watch(
function() {
return element.attr('class');
}, function(){
if(!element.hasClass("open")){
scope.$eval(scope.isNotOpen)
}
});
};
return {
link: linkFunction
scope: {isNotOpen: '&'}
}
})
你可以使用如下所示
<div class="open" is-not-open="dosomething()">
答案 2 :(得分:1)
您可以$watch
使用如下指令的class属性:
.directive('watchClass', function() {
return function(scope, element, attrs) {
scope.$watch(function() {
return attrs['class']; // Or element.attr('class');
}, function(newValue, oldValue) {
// Check for open class removal and do something
});
};
});
然后将该指令应用于您的元素。
<ul class="open" watchClass>
(注意:除了角度折磨你的DOM之外的其他任何东西听起来都很奇怪)