如何从元素中删除所有inheritance和计算的样式?

该页面包含以下CSS:

input[type=text] { display: inline; padding: 7px; background-color: #f6f6f6; font-size: 12px; letter-spacing: 1px; border: 1px solid #aac7d1; /* lots of other styles here... */ } 

我有很多文本输入元素和以下内容:

  

我尝试通过jQuery将不同的样式应用于这个单独的文本框(txt1):

 $('#txt1').removeClass().removeAttr('style').css({ 'background-color': '#ff0000', //lots of other styles here... }); 

但是这些来自样式表的样式无法通过这种方式从元素中删除。 css规则, input[type=text]不是自定义类,所以removeClass()在这里不起作用,如果我是对的。

我想做的是; 完全删除所有应用于元素txt1 。 除了获取所有计算样式的列表并将其设置为空之外,是否有某种方法可以执行此操作?

有没有办法做到这一点

如果选择器匹配,则无法停止应用于元素的规则。

你也可以

  • 设置您想要具有特定值的每个属性(使用适当的特定选择器和!important
  • 将元素移动到另一个文档(然后可以加载,例如,iframe)。
  • 删除规则(从而导致它不适用于任何元素)
  • 更改规则集上的选择器(因此它不再与元素匹配,您必须小心确保它仍然选择您关心的元素)

获取所有计算样式的列表并将其设置为空?

那不行。 大多数属性不接受空值,因此规则将无效并被忽略(从而导致先前的规则再次应用)。

正如您在此链接中所看到的: http : //www.w3.org/TR/CSS2/cascade.html#specificity ,所有选择器都具有特异性值。 因此,如果你编写这样的css规则: #txt1 {} ,你可以重置所有不必要的值。