jQuery为background-image css值返回'none'

时间:2010-07-06 17:19:02

标签: jquery css

我正在尝试获取元素background-image url的值。这是在外部css文件中设置的。以下总是返回'none'。

$(".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;
}

5 个答案:

答案 0 :(得分:3)

JavaScript使用camelCased CSS属性名称,否则它们将被连字。因此,background-image变为backgroundImage

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

答案 1 :(得分:0)

确保将代码放入load事件中,即使加载了图像也会触发该事件:

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

答案 2 :(得分:0)

尝试使用attr代替css

答案 3 :(得分:0)

根据jQuery文档@ http://api.jquery.com/css/,您应该可以使用任何一种变体。

  

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

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

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

答案 4 :(得分:0)

已经太晚了,但我今天发现了同样的问题并通过.css("background-image")[0].style.backgroundImage切换来修复它。