更改未点击元素的不透明度

Posted

技术标签:

【中文标题】更改未点击元素的不透明度【英文标题】:Change Opacity of an Unclicked Element 【发布时间】:2013-03-16 23:01:45 【问题描述】:

我的网页上有一些元素,我希望当我单击其中一个元素时,其他元素(未单击的元素)的不透明度会发生变化。

这是一个元素的 html 代码:

<div class="element hover download" id="_4>
    <div class="front">
        <div class="element-image-front">
            <img src="./Post thumbnail images/raspberryPiboard.JPG"/>
        </div>
    </div>
    <div class="back">
        <a class="link" href="#/portfolio/chicken.html" onclick="gestionClic('compteur11');"><div class="element-image-back">
        <div class="element-image-back">
            <img src="./Post thumbnail images/raspberryPiboard.JPG"/>
        </div>
        </a>
    </div>
</div>

当我点击一个元素时,这是被点击的class="link"

我试过了,但它不起作用:

$('.link').click(function() 
    $('.element').siblings().stop().animate(opacity: 0.4, 300);
    $('.link').click(function() 
        $not('.element').stop().animate(opacity: 1.0, 300);
    );
);

【问题讨论】:

这很奇怪,你的 jQuery 代码对我来说看起来很不错? 但是真的不行…… 这是一个错字:$(this).child().$('.element-image-front')?我很确定链式方法中不应该有另一个$ 像这样: $('.link').click(function() $('.element').siblings().stop().animate(opacity: 0.4, 300 ); $('.link').click(function() $not('.element').stop().animate(opacity: 1.0, 300); ); );它靠近工作。但所有元素都变为 0.4 不透明度。我不知道如何获取点击链接的父 div... 【参考方案1】:

首先:清理你的 HTML 元素!

第二:在我的演示中工作

$('.element > img').click(function () 
    $(this).animate(opacity:0.4).siblings().animate(opacity:1);
);

在你清理你的 HTML 之后......

<div class="element">
    <img src="SRC">
    <img src="SRC">
</div>

所以你可以使用.siblings()

演示: http://jsfiddle.net/l2aelba/nq3CN/


如果您真的想使用未清理的 HTML,那么就这样做......

$('.element img').click(function () 
     $('.element').find("img").not(this).animate(opacity:1);
    $(this).animate(opacity:0.4);
);

演示: http://jsfiddle.net/l2aelba/nq3CN/1/


你的例子:

$('.element > .back > .link').click(function () 
    $(this).animate(opacity:1);
    $(this).parents(".element").find(".front > .element-image-front").animate(opacity:0.3);
);

点击另一个:

$('.element > .front > .element-image-front').click(function () 
    $(this).animate(opacity:1);
    $(this).parents(".element").find(".back > .link").animate(opacity:0.3);
);

应该在一个函数中完成,但您的 HTML 不清楚。因此,只需编写 2 个函数即可实现 100% 的工作和 100% 的绝对焦点元素

演示: http://jsfiddle.net/l2aelba/nq3CN/2/

【讨论】:

感谢您的帮助。但是,单击的元素是:class="link"(因为我的 .element 上有悬停效果)。不透明度可以应用于整个元素:class="element"。所以我需要获取点击的 class="link"... 的父类或id 我的 HTML 很干净!这是因为我有一个点击计数,一个 3D 翻转效果,一个叠加效果和其他东西......但是,当元素被点击时,这是被点击的 class="link"。我需要应用孩子 class="element 或他的 id 的不透明度。我不知道如何点击 div class="link" 的父项 $(".link").parents(".element");(查找父类名 ELEMENT 直到找到,最接近) 谢谢!像这样: $('.link').click(function() $(this).parents(".element").siblings().stop().animate(opacity: 0.4, 300); $ ('.link').click(function() $not(this).stop().animate(opacity: 1.0, 300); ); );有用。但是当我点击另一个元素时,它保持在 0.4 的不透明度。 jsfiddle.net/l2aelba/DrFvX/2 @lolo 我不知道你想要什么,点击.link将不透明度设置为0.3或1?

以上是关于更改未点击元素的不透明度的主要内容,如果未能解决你的问题,请参考以下文章

如何在不影响子元素的情况下更改背景图像的不透明度?

CSS/JS:改变滑动时的不透明度

切换div onclick的不透明度

jQuery 效果函数

jQuery 效果方法

jQuery 中的不透明度更改动画不起作用