这个问题出现了几个问题。
问题 #1 - css特异性(如何覆盖重要规则)。
根据规范 - 要覆盖此选择器,您的选择器应该“更强”,这意味着它应该是!重要的并且至少有 1 个 id、1 个类和其他东西 - 根据你创建这个选择器是不可能的(因为你不能改变页面内容)。所以唯一可能的选择是将一些东西放入元素样式中(可以用js完成)。注意:样式规则也应该有 !important 来覆盖。
问题 #2 - 背景不是单一属性 - 它是一组属性(参见规范)
因此,您确实需要知道要更改的属性的确切名称是什么(在您的情况下,它将是背景图像)
问题 #3 - 如何删除已应用的规则(以获取先前的值)?
不幸的是,css 没有机制来解除符合元素的规则 - 只能用“更强”规则覆盖。因此,您将无法仅通过将值设置为“继承”或“默认”之类的值来解决此任务,因为您想要查看的值既不是从父级继承也不是默认值。要解决这个问题,您有几个选择。
1)您可能已经知道要应用的值是什么。例如,您可以根据使用的选择器找出此值。所以在这种情况下,您可能知道选择器“.image-list li”需要背景图像:url(“ http://placekitten.com/150/50 ”)。如果是这样 - 只有你这个脚本:
jQuery(".image-list li").attr('style', 'background-image: url("http://placekitten.com/150/50") !important; ');
2)如果您不知道该值,那么您可以尝试以这样的方式更改页面内容,您想要取消的规则不再符合元素的条件,而您想要显示的规则 - 仍然符合条件。在这种情况下,您可以从容器元素中临时删除 id。这是代码:
jQuery("#an-element").attr('id', '');
var backgroundImage = jQuery(".image-list li").css('background-image');
jQuery("#an-element").attr('id', 'an-element');
jQuery(".image-list li").attr('style', 'background-image: ' + backgroundImage + ' !important; ');
这是小提琴http://jsfiddle.net/o3jn9mzo/的链接
3)作为第三种解决方案 - 您可以生成符合所需选择的元素以找出属性值 - 如下所示:
var backgroundImage = jQuery("<div class='image-list'><li></li></div>").find('li').css('background-image');
jQuery(".image-list li").attr('style', 'background-image: ' + backgroundImage + ' !important; ');
PS:很抱歉回复晚了。