2012-03-15 100 views
2

我有一个有趣的问题,我不明白。这是一个简单的jQuery if else语句,但它不起作用。为什么它不起作用?jQuery if/else语句CSS

代码:

$("#div").click(function(){ 

    if ($("#div2").css("background-image") === "url(img/image.png)") { 
     alert('OK'); 
    } 
    else { 
     alert('NG'); 
    } 

}); 

但是当我改变.css("background-image") === "url(img/image.png)",例如,.css('position') === 'absolute',它的工作。

+0

如果你提醒(或写/记录/检查)'$(“#div2”).css(“background-image”)'会发生什么情况。 – GolezTrol 2012-03-15 19:45:20

+0

你能发布你正在检查的HTML代码片段,也许相应的CSS? – sinemetu1 2012-03-15 19:46:06

+1

多数民众赞成在奇怪,为什么'.css('高度')==='绝对''永远工作? – 2012-03-15 19:47:34

回答

0

看来,正确的答案是写的完整路径的图像。因此,请使用url(http://www.myhost.com/img/image.png)而不是url(img/image.png)

4

值可能存在细微的差异;提醒else语句中的值以查看发生了什么。例如,

if ($("#div2").css("background-image") === "url(img/image.png)") { 
    alert('OK'); 
} 
else { 
    alert($("#div2").css("background-image")); 
} 
+0

是的,'background-image' url获取完全合格的路径。小提琴:http://jsfiddle.net/TKUET/ – steveax 2012-03-15 19:49:44

2

我的猜测是,当CSS加载时,它正在采取URL(IMG/image.png)和图灵是为http://www.somehost.com/img/image.png。因此,.css(“background-image”)将不再等于“url(img/image.png)”。

而不是检查的

.css('background-image') == 'url(img/Image.png)' 

检查

.css('background-image').indexOf("img/Image.png") != -1 
0

只是在黑暗中拍摄在这里,但 “URL(IMG/image.png)” 可能应该有周围的参数的URL单引号(),因为这是CSS的语法。

"url('img/image.png')"

+1

引用路径是可选的,单引号和双引号都可以。 – steveax 2012-03-15 19:55:22

+0

当然,在样式表中声明路径时都很好。然而,这里的问题是:$(“#div2”).css(“background-image”)返回什么?带或不带单引号的字符串。这可能是一个浏览器依赖的答案,所以按照Daniel的建议,做一个indexOf可能是最安全的方法。 – Steve 2012-03-15 20:16:04

+0

至少在Firefox中,完整路径被返回并用双引号括起来:'url(“http://thesite.tld/path/to/image.png”)'(参见上面的小提琴) – steveax 2012-03-15 20:34:18