2010-07-06 37 views
1

我想获得元素背景图像的URL值。这是在一个外部的css文件中设置的。以下总是返回'无'。jQuery返回'无'为背景图像的CSS值

$(".navHeader").each(function() { 

       alert($(this).css("background-image")); 

      }); 

CSS:

.navHeader { 
background-image:url("../../../../commondata/sharedimages/summary/NavBox_topMiddle.png"); 
background-repeat:no-repeat; 
font-family:Arial,Helvetica,san-serif; 
font-size:14px; 
font-weight:normal; 
line-height:16px; 
text-align:center; 
text-decoration:none; 
} 

回答

3

当使用camelCased CSS属性名称时,JavaScript会使用camelCased CSS属性名称。所以,background-image变成backgroundImage

alert($(this).css("backgroundImage"));

+1

OP,这是否解决了您的问题?在类似情况下,我尝试使用backgroundImage而不是background-image,而.css仍然返回“none”。 – Laereom 2013-01-01 18:27:54

0

确保你把你的代码load事件,火灾甚至图像加载后:

$(window).load(function(){ 
    $(".navHeader").each(function() { 
    alert($(this).css("background-image")); 
    }); 
}); 
+0

我试过了,$(document).ready – Nick 2010-07-06 18:55:31

0

尝试使用的attr代替css

+2

没有'background-image'属性,这是一个样式:) – 2010-07-06 17:29:12

0

据jQuery的文档@http://api.jquery.com/css/你应该能够使用任一变化。

此外,jQuery可以同样地解释多字属性的CSS和DOM格式的 。例如,jQuery可以理解并返回 .css(“background-color”)和.css( “backgroundColor”)的正确值。

确保您的页面上没有任何可能影响属性的代码执行之前。在使用媒体查询样式表时,我遇到了同样的问题,并且在我的代码被激发之前立即将CSS属性重置为“”。

要排除正在加载的文档,可以在页面完全加载时在控制台中运行相同的代码,以查看它是否仍然导致“无”。如果没有 - 你会想以某种方式在使用document.ready或window.load函数之一应用/下载代码后触发代码。

0

多年以后,但我今天发现相同的问题,并通过切换.css("background-image")[0].style.backgroundImage进行了修复。