Jquery 无法在AngularJS指令中检索CSS值

Jquery 无法在AngularJS指令中检索CSS值,jquery,css,angularjs,Jquery,Css,Angularjs,我一直在尝试使用上的代码来访问描述浏览器大小的值,该值将在AngularJS中使用。我希望能够做到这一点,这样我就可以设置路由状态的屏幕大小,我使用的ui路由器的基础上 指令的这一部分检索已添加到index.html文件中的元素。每个元素都有一个类来描述浏览器的大小,在我的例子中是“小”、“中”、“大”。使用CSS,媒体查询用于根据浏览器窗口的大小设置“显示:无”元素。因此,如果浏览器的大小小于320px,则.medium和.large类都将显示:none。该指令应该检查这些元素的显示值,并找出

我一直在尝试使用上的代码来访问描述浏览器大小的值,该值将在AngularJS中使用。我希望能够做到这一点,这样我就可以设置路由状态的屏幕大小,我使用的ui路由器的基础上

指令的这一部分检索已添加到index.html文件中的元素。每个元素都有一个类来描述浏览器的大小,在我的例子中是“小”、“中”、“大”。使用CSS,媒体查询用于根据浏览器窗口的大小设置“显示:无”元素。因此,如果浏览器的大小小于320px,则.medium和.large类都将显示:none。该指令应该检查这些元素的显示值,并找出哪些元素没有显示值,从而返回活动类的名称

link: function(scope, elem, attrs) {
       var markers = elem.find('span');
       function isVisible(element) {
           return element
           && element.style.display != 'none'
           && element.offsetWidth
           && element.offsetHeight;
       }

       function update() {
           angular.forEach(markers, function (element) {
           if (isVisible(element)) {
               scope.dnDisplayMode = element.className;
               return false;
           }
       });
   }

   var t;
   angular.element($window).bind('resize', function() {
       clearTimeout(t);
       t = setTimeout(function() {
           update();
           scope.$apply();
       }, 300);
   });

   update();
}

我遇到的问题是函数isVisible。对于每个元素,element.style.display的值都是“null”。我使用了Firefox和Chrome的元素检查器,发现元素的值为“display:inline block”或“display:none”。但是AngularJS使用其嵌入式jQuery从元素中检索值。为此,它将转到元素的样式并尝试查找显示值。但在所有选定元素的“样式”属性中,该样式的所有值均为空


有什么想法吗?

您的'elem'变量是一个jqLite对象,要访问本机dom属性,如style.display,您需要在isVisible函数中使用元素[0].style.display。

CSSStyleDeclaration属性是什么意思?你想访问什么?加上问题中的代码,这个Plunker是完全无用的!抱歉,我刚刚发现CSSStyleDeclaration是特定于Chrome的。我已经更新了这个问题,希望能更清楚。