Jquery 如何覆盖css属性
我如何用javascript/jQuery覆盖css属性,比如cssHooks(jQuery),但prop是在外部css中 e、 g index.htmlJquery 如何覆盖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'); 这将隐藏元
<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();
}
});