1

我有一个关于我的代码的问题。

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

但是,if( $(this).css('opacity') !== 0 )当它返回 0 时执行。知道为什么会发生这种情况吗?

提前致谢!

我的代码在这里:

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

4

4 回答 4

5

这是因为 CSS 值总是以字符串形式返回(与heightjQuerywidth方法不同,它们返回一个数字)。

试试这个测试是否适合你:

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

或简单地使用弱(类型强制)不等式:

if( $(this).css('opacity') != 0 )
于 2013-01-31T08:42:44.327 回答
2

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

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

或者

if(parseFloat($(this).css('opacity'))!==0)
于 2013-01-31T08:42:41.567 回答
1

您需要先解析该值。所以您的 if 将是。

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

和工作演示

编辑:parseInt 到 parseFloat

于 2013-01-31T08:42:57.537 回答
0

原因是条件确实为真。.css('opacity') 返回一个字符串;因此,在您的情况下,它将返回“0”,这当然与数字 0 不同,因为您使用的是不完全相同的运算符 (!==)。

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

'0' !== 0 --> 真 '0' != 0 --> 假

于 2013-01-31T08:50:54.900 回答