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

Posted

技术标签:

【中文标题】jQuery:你能用 jQuery 找到所选元素的不透明度吗?【英文标题】:jQuery: Can you find the selected element's opacity with jQuery? 【发布时间】:2011-02-27 16:52:35 【问题描述】:

我有一个在一组列表元素上运行的过滤器,它将不太理想的元素淡化到 0.25 不透明度,但我希望它们的不透明度恢复到 1,然后在悬停时又回到 0.25。这很简单吗?

我只是很难找到一种方法来获取所选元素的当前不透明度,以便将其存储在一个变量中以供使用。

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

【问题讨论】:

小心该代码。如果有人在上面来回移动鼠标,你会被塞住的。 【参考方案1】:

有完整指南“使用 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');

【讨论】:

【参考方案2】:

您需要在函数外部设置 mouseout opacity var,这将阻止您的函数更改该值。

nohoverOpacity = $('#centerPanel li').css("opacity");
hoverOpacity = 1;
dur = 1000;
$('#centerPanel li').hover(function()
        $(this).fadeTo(dur,hoverOpacity);
    ,function()
        $(this).fadeTo(dur,nohoverOpacity);
);

这是你想要的吗? :)

【讨论】:

【参考方案3】:
$('#centerPanel li').hover(function()
    if(!$(this).is(':animated'))
       $(this).animate(opacity: 'toggle', 1000);
,
function()
    if(!$(this).is(':animated'))
       $(this).animate(opacity: 'toggle', 1000);
);

【讨论】:

这实际上并没有回答“你能用 jQuery 找到所选元素的不透明度吗”这个问题......虽然我没有 -1。 +1 - 虽然不直接回答问题,但它与设置所选元素的不透明度有关。换句话说,您的示例说明了一个很好的观点。 @Jeriko:你不觉得,如果一个答案与确切的问题有点不同,但对于基本问题来说是一个更好的解决方案,也应该被提及? 我完全同意 jAndy,这就是为什么我没有 -1 你。我越来越注意到人们并不总是希望得到纠正。他们只是想在他们的问题范围内得到建议。如果你先回答他,然后提出更好的解决方法,你会得到一个很好的答案:)【参考方案4】:

试试$(this).css("opacity")

source

【讨论】:

以上是关于jQuery:你能用 jQuery 找到所选元素的不透明度吗?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery HTML/CSS 方法大全

如何使用 jQuery 在鼠标悬停时找到当前元素?

带有所选元素的子级的 JQuery 选择器 not()

JQuery HTML

Jquery Selector无法在Polymer中找到div元素。应该是直截了当不理解问题

延迟 JQuery 效果