Jquery 如何覆盖css属性

Jquery 如何覆盖css属性,jquery,css,overriding,Jquery,Css,Overriding,我如何用javascript/jQuery覆盖css属性,比如cssHooks(jQuery),但prop是在外部css中 e、 g index.html <div id="test">abc</div> 每次我使用背景道具时,我都想隐藏这个元素,对背景什么都不做 “但我不仅想对某些div(#test)这样做,还想对css中带有背景道具的每个元素这样做”如果您使用jquery,您可以这样做 $('#test').css('display','none'); 这将隐藏元

我如何用javascript/jQuery覆盖css属性,比如cssHooks(jQuery),但prop是在外部css中

e、 g

index.html

<div id="test">abc</div>
每次我使用背景道具时,我都想隐藏这个元素,对背景什么都不做


“但我不仅想对某些div(#test)这样做,还想对css中带有背景道具的每个元素这样做”

如果您使用jquery,您可以这样做

$('#test').css('display','none');
这将隐藏元素并保持背景不变


[编辑]我想我以前不理解这个问题。根据您的评论,您要做的是更改正在使用
background
属性的内容?我不相信有办法做到这一点。我能想到的唯一选项是循环遍历每个DOM元素,并检查是否设置了element.style.background。

直接在元素上设置的样式值将覆盖CSS中设置的内容。如果要隐藏元素,可以按如下方式执行:

$('#test').hide();
在内部,这只是设置
elem.style.display=“无”的快捷方式

你问题的这一部分让我们感到困惑:“每次我使用背景道具时,我都想隐藏这个元素,对背景什么都不做。”因此,如果你需要更多的答案,你需要澄清你在问什么

隐藏元素不会以任何方式更改背景(尽管它将不再可见)。如果要在保持元素可见的同时隐藏背景,则需要将背景设置回透明

$('#test').css("background", "transparent");

直接在元素上设置此样式值将覆盖您设置的任何CSS样式表规则。

如果要隐藏设置了CSS属性
background
的元素,最好为这些元素添加一个类。然后根据类隐藏元素

下面的示例隐藏了类
背景设置为
的所有项目

$('.background-set').hide();
如果未设置
background
属性,则更糟糕的方法是抓取元素并过滤掉。我使用div选择器开始搜索,但您可以根据需要扩展它

$('div').filter(function() {
    return $(this).css('background').replace('rgba(0, 0, 0, 0) none repeat scroll 0% 0%','').length > 0;
}).hide();

当使用javascript检查后台属性时,不同的浏览器将返回不同的值。Chrome为没有背景设置的元素返回
rgba(0,0,0,0)无重复滚动0%0%
,因此检查返回字符串的长度将不起作用,其他浏览器可能不支持rgba并返回其他内容

你真正需要做的就是检查背景属性是否与上面的匹配,至少对于Chrome来说是这样,然后找出其他浏览器返回的内容,然后做一些真正低效的事情,比如:

var pattern=/rgba\(0\, 0\, 0\, 0\)/gi;

$.each($('*'), function(index, item) {
    var bg = $(item).css('background');
    if (!bg.match(pattern)) {
        $(item).hide();
    }
});

你说的“隐藏这个……不要对背景做任何事情”是什么意思?请重申你的问题,包括对答案的评论。感谢你更新你的问题。我不明白,你不想隐藏每个红色背景的元素,还是每个背景设置的元素?隐藏元素而不使用背景到底是什么意思?你知道隐藏元素时背景会消失,除非你通过编程更改背景,否则隐藏/显示元素时背景会相同。至于隐藏具有特定背景的元素,这将意味着迭代所有元素并检查背景属性,这将是非常低效的。我想“更改使用背景属性的内容”,但我想不仅对特定div(#test),而且对css中具有背景属性的每个元素都这样做“您想做的是更改正在使用后台属性的内容?”-是的(第二个函数不起作用,请参阅我的答案,不过想法不错!
var pattern=/rgba\(0\, 0\, 0\, 0\)/gi;

$.each($('*'), function(index, item) {
    var bg = $(item).css('background');
    if (!bg.match(pattern)) {
        $(item).hide();
    }
});