为什么不透明度为0,但我的if语句仍然执行?

时间:2013-01-31 08:38:53

标签: javascript jquery opacity

我对我的代码有疑问。

我使用$(this).css('opacity')来检查元素是否透明。当元素是透明的时,它应该返回0。

然而,if( $(this).css('opacity') !== 0 )在返回0时执行。任何想法为什么会发生这种情况?

提前致谢!

我的代码在这里:

http://jsfiddle.net/dennisboys/f3JuH/2/

4 个答案:

答案 0 :(得分:5)

这是因为CSS值总是作为字符串返回(与返回数字的heightwidth jQuery方法不同。)

尝试此测试是否适合您:

if( parseFloat($(this).css('opacity')) !== 0 )

或仅使用弱(类型强制)不等式:

if( $(this).css('opacity') != 0 )

答案 1 :(得分:2)

CSS值以字符串形式返回。改变这样的条件。

if( $(this).css('opacity') !== "0" )

if(parseFloat($(this).css('opacity'))!==0)

答案 2 :(得分:1)

你需要首先解析那个值。所以你的if是。

if(parseFloat($(this).css('opacity'))!==0)

<强> And the workin demo

编辑:parseInt到parseFloat

答案 3 :(得分:0)

原因是条件确实如此。 .css('opacity')返回一个字符串;所以在你的情况下,它会返回'0',这当然与数字0不同,因为你使用了不相同的运算符(!==)。

您应该使用不等于运算符(!=)。

'0'!== 0 - &gt;真正 '0'!= 0 - &gt;假