jQuery:你能用jQuery找到选定元素的不透明度吗?

17

我有一个过滤器应用在一组列表元素上,将较不理想的元素淡化到0.25的透明度,但是我希望当鼠标悬停在元素上时,它们的透明度能够恢复到1,当鼠标移开后再变回0.25。这个实现起来很简单吗?

我只是在寻找一种方法来获取选定元素当前的透明度,以便可以将其存储在变量中供使用。

$('#centerPanel li').hover(function(){
        var currentOpacity = $(this).?????
        $(this).fadeTo(1,1);
    },
    function(){
        $(this).fadeTo(1,currentOpacity);
    });

2
小心那段代码。如果有人在上面来回移动鼠标,你就会遇到麻烦。 - nickf
4个回答

34

尝试使用$(this).css("opacity")

来源


6

这里有一篇完整的指南,讲述如何使用jQuery在MSIE中获取当前不透明度:http://zenverse.net/get-current-opacity-in-msie-using-jquery-cross-browser-codes/

代码:

function getopacity(elem) {
  var ori = $(elem).css('opacity');
  var ori2 = $(elem).css('filter');
  if (ori2) {
    ori2 = parseInt( ori2.replace(')','').replace('alpha(opacity=','') ) / 100;
    if (!isNaN(ori2) && ori2 != '') {
      ori = ori2;
    }
  }
  return ori;
}

//to use it
var currentopacity = getopacity('div.the-element');

1
$('#centerPanel li').hover(function(){
    if(!$(this).is(':animated'))
       $(this).animate({opacity: 'toggle'}, 1000);
},
function(){
    if(!$(this).is(':animated'))
       $(this).animate({opacity: 'toggle'}, 1000);
});

这并没有真正回答问题“你能用jQuery找到选定元素的不透明度吗”……但我没有给你点踩。 - Jeriko
1
虽然没有直接回答问题,但它与设置所选元素的不透明度有关。换句话说,你的示例说明了一个好点。 - David Robbins
@Jeriko:你不觉得,如果一个答案与确切的问题略有不同,但对于基本问题来说是更好的解决方案,也应该被提及吗? - jAndy
我完全同意jAndy的观点,这也是为什么我没有给你-1的原因。我越来越注意到人们并不总是想要被纠正,他们只是想在问题的范围内得到建议。如果你先回答了他的问题,然后再提出更好的解决方案,那么你就会有一个很棒的答案 :) - Jeriko

1
你需要在函数外设置mouseout透明度变量,这样可以防止函数更改该值。
nohoverOpacity = $('#centerPanel li').css("opacity");
hoverOpacity = 1;
dur = 1000;
$('#centerPanel li').hover(function(){
        $(this).fadeTo(dur,hoverOpacity);
    },function(){
        $(this).fadeTo(dur,nohoverOpacity);
});

这是你想要的吗?:)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接