我正在尝试获取元素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;
}
答案 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
切换来修复它。