我对我的代码有疑问。
我使用$(this).css('opacity')
来检查元素是否透明。当元素是透明的时,它应该返回0。
然而,if( $(this).css('opacity') !== 0 )
在返回0时执行。任何想法为什么会发生这种情况?
提前致谢!
我的代码在这里:
答案 0 :(得分:5)
这是因为CSS值总是作为字符串返回(与返回数字的height
和width
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;假