我怎麼能用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