1

假设,我在一个名为 custom.css 的包含样式表中以及在下面的代码中的样式部分中提到了“td”样式,那么在 jQuery 中有一种方法可以获取样式表中提到的样式。

<!DOCTYPE html>
<html>
 <head>
   <link type="text/css" href="../custom.css" rel="stylesheet" />
    <style type="text/css">
      td {border: 2px solid red;background-color:lightyellow;}
    </style>
 </head>

在 custom.css 中有一个 td 样式定义如下。

 td {border: 1px dashed black;background-color:pink;}
4

1 回答 1

0

没有 jQuery 选择器可以做到这一点。Javascript 访问 DOM,它并不直接“知道”为什么一个元素具有它所具有的计算样式。此外,正因为如此,如果没有给定的样式声明,DOM 不会跟踪计算出的样式。

也就是说,可以禁用给定的样式表:

http://jsfiddle.net/dPA9u/

您可以使用此方法关闭给定样式表,检查目标元素的计算样式,然后重新启用样式表。您最终会使用以前的样式,但用户不会看到任何事情发生:

var ele = document.getElementById('my_div');
document.styleSheets[3].disabled = true;
var bg_color = window.getComputedStyle(ele).backgroundColor;
document.styleSheets[3].disabled = false;
alert('Original background color is: '+bg_color);

试试看:http: //jsfiddle.net/GDSEK/1/

将它们放在一起,您可以制作一个循环document.styleSheets查找目标工作表的脚本,禁用它,测量目标元素的计算样式,然后重新启用目标工作表。

这不与内联样式抗衡——但您也可以通过禁用所有样式表来检查这些样式,然后检查element.style

文档

于 2012-08-15T18:39:06.110 回答