2011-07-19 101 views
17

我有这样的代码:如何删除背景图片属性?

if (pansel.val() == "1") 
    $(#myDiv).css('background-image', 'url(/private_images/guida_check_category.jpg)'); 
else 
    $(#myDiv).css({ 'background-color': '#ffffff' }); 

,我看到的是,当我申请的背景图像,后续代码:

$(#myDiv).css({ 'background-color': '#ffffff' }); 

犯规删除图像,并把白色的背景色。图像仍然存在!

我该如何完全删除该背景图像属性?

回答

44

试试这个:

if (pansel.val() == "1") 
    $("#myDiv").css('background-image', 'url(/private_images/guida_check_category.jpg)'); 
else { 
    $("#myDiv").css({ 'background-color': '#ffffff' }); 
    $("#myDiv").css('background-image', 'none'); 
} 
+0

是的,它的工作原理!感谢:) – markzzz

+0

请记住,这实际上不会_remove_属性,它会简单地添加一个内联样式的'background-image:none' - 如果您想实际_remove_属性 –

+0

请参阅我的答案使用字典语法,两个改变都可以通过:$(“#myDiv”)。css({'background-color':'#ffffff','background-image':'none'});' –

3

background:0会删除整个背景的CSS

6

此代码...

$myDiv = $('#myDiv'); 
$myDiv.css('background-image', 'none'); 

实际上不会删除背景图像属性。它会让jQuery为myDiv元素设置一个内联样式的'background-image:none',这可能不是你想要的。

如果您稍后将类应用于使用背景图像的myDiv元素,或尝试使用'background:url(')设置背景图像,则内联样式将会覆盖并且背景图片不会显示

要删除属性,我建议您只将'背景图像'值设置为无,然后它将从内联样式一起消失,并且您可以更容易地操作它...

if (pansel.val() === "1") { 
    $myDiv.css('background-image', 'url(/private_images/guida_check_category.jpg)'); 
} else { 
    $myDiv.css('background-color', '#ffffff').css('background-image', ''); 
    //the value will be set to white with the image 'empty', so it will disappear from inline styles 
} 
0

如果你想彻底删除样式属性,你可以做这样的事情

var oDiv = document.getElementById("myDiv"); 
oDiv.style.removeProperty("background-color"); 

我发现,将其设置为透明产生一些奇怪的矛盾,如果以后做其他的颜色该地区的行动。如果您尝试恢复到您的css中指定的某种默认设置,则删除该属性效果会更好。