Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测DOM元素中的属性更改_Javascript_Css_Angularjs_Events_Dom - Fatal编程技术网

Javascript 检测DOM元素中的属性更改

Javascript 检测DOM元素中的属性更改,javascript,css,angularjs,events,dom,Javascript,Css,Angularjs,Events,Dom,是否有任何方法可以检测何时从DOM元素中删除CSS类 我有一个,我需要捕获此的打开类何时被删除 在Angular或jQuery中执行此操作的任何方法如果您谈论的是在没有任何修改者帮助的情况下监视类属性的更改,那么唯一的方法是: 完全使用CSS解决您的问题(当类被删除时,CSS样式将自动更改) 使用(仅在现代浏览器中)可以注册对特定属性更改的兴趣。不幸的是,IE 11之前的IE中不支持MutationObserver 如果您更具体地了解您要完成的任务和/或更改类名的代码,那么我们可能还可以提供一些

是否有任何方法可以检测何时从DOM元素中删除CSS类

我有一个
,我需要捕获此
打开类何时被删除


在Angular或jQuery中执行此操作的任何方法如果您谈论的是在没有任何修改者帮助的情况下监视类属性的更改,那么唯一的方法是:

  • 完全使用CSS解决您的问题(当类被删除时,CSS样式将自动更改)

  • 使用(仅在现代浏览器中)可以注册对特定属性更改的兴趣。不幸的是,IE 11之前的IE中不支持MutationObserver


  • 如果您更具体地了解您要完成的任务和/或更改类名的代码,那么我们可能还可以提供一些其他想法。

    您可以为此编写自定义指令

    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()">
    

    您可以使用如下指令
    $watch
    类属性:

    .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之外,还有什么别的事情听起来很奇怪)

    谁删除了CSS类?看起来几年前也有人问过类似的问题。我想知道现在是否有新的信息。只是想澄清一下:您可以更改(我想)删除“open”类的脚本吗?或者您只能查看DOM?不,修改类的代码完全不在我的控制范围内。我想知道,如果属性不是由
    $attr.$set()
    更改,那么
    attrs['class']
    是否会被更新?我必须将其更改为
    return element.attr('class')以使其工作。