我怎么能用cssHooks(jQuery)重写css属性,但是prop是在外部css中。我怎么能忽略css属性
例如
的index.html
<div id="test">abc</div>
styles.css的
#test {background: red;}
我每次使用后台道具时我想隐藏此ELEM,什么也不做背景。
“但我想这样做不仅对某些DIV(#TEST),但在我的CSS背景道具的每个元素”
我怎么能用cssHooks(jQuery)重写css属性,但是prop是在外部css中。我怎么能忽略css属性
例如
的index.html
<div id="test">abc</div>
styles.css的
#test {background: red;}
我每次使用后台道具时我想隐藏此ELEM,什么也不做背景。
“但我想这样做不仅对某些DIV(#TEST),但在我的CSS背景道具的每个元素”
,如果你使用jQuery,你可以做
$('#test').css('display','none');
这将隐藏元素并保持背景不变。
[编辑]我不认为我理解了以前的问题。根据你的评论,你想要做的是改变使用background
属性的东西吗?我不相信有办法做到这一点。我能想到的唯一选择是遍历每个DOM元素,并检查是否有element.style.background集合。
直接在元素上设置的样式值将覆盖CSS中设置的事物。如果你想隐藏的元素,你可以这样做是这样的:
$('#test').hide();
内部,这仅仅是用于设置elem.style.display = "none";
的快捷方式。
您的问题的这一部分让我们感到困惑:“每次我使用背景支撑时,我都想隐藏这个元素,并且不会对背景做任何事情。”所以如果你需要更多的答案,你需要澄清你的问题。
隐藏元素不会以任何方式更改背景(尽管它将不再可见)。如果您试图在保持元素可见的情况下隐藏背景,那么您需要将背景设置为透明。
$('#test').css("background", "transparent");
直接在元素上设置此样式值将覆盖您设置的所有CSS样式表规则。
如果要隐藏设置了css属性background
的元素,最好为这些元素添加一个类。然后根据类隐藏元素。
下面的示例隐藏了类background-set
的所有项目。
$('.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();
)第二个功能是行不通的,看到我的回答,虽然很好的想法! – adeneo 2012-04-09 19:10:39
@ adeneo修复了它,所以它在chrome中按预期工作 – iambriansreed 2012-04-09 19:16:42
当使用javascript检查背景属性时,不同的浏览器将返回不同的值。对于没有背景设置的元素,Chrome会返回rgba(0, 0, 0, 0) none repeat scroll 0% 0%
,因此检查返回字符串的长度将不起作用,其他浏览器可能不支持rgba并返回其他内容。
你真正需要做的是检查,看看是否background属性符合以上条件,至少为Chrome,然后再找出其他浏览器返回为好,做的确实低效类似:
var pattern=/rgba\(0\, 0\, 0\, 0\)/gi;
$.each($('*'), function(index, item) {
var bg = $(item).css('background');
if (!bg.match(pattern)) {
$(item).hide();
}
});
另一个正则表达式过量。 – iambriansreed 2012-04-09 19:18:12
你是什么意思“隐藏这个......并且什么也不背景”? – 2012-04-09 18:17:39
请重申您的问题,包括对答案作出的评论。 – iambriansreed 2012-04-09 18:24:21
感谢您更新您的问题。 – iambriansreed 2012-04-09 18:31:33