如何使用jquery淡出除所选元素之外的任何内容?

发布于 2025-01-01 07:15:57 字数 1010 浏览 0 评论 0原文

我有一些像这样创建的 li 元素:

echo '<ul>';
foreach ($test as $value){
echo '<li class="li_class">.$value['name'].</li>';
}
echo '</ul>';

这会给我:

<li class="li_class">name1</li>
<li class="li_class">name2</li>
<li class="li_class">name3</li>
...

我想要做的是,当我将鼠标悬停在 li 元素上时,所有其他 li 元素淡出约 50%。

我可以有 2 个类并使用 jquery 来更改它们:

.li_class{
background: #ccc;
} 

.fade{
opacity: .5;
}

但是我不知道如何告诉 jquery 将 .fade 类添加到所有其他 li,但不是我用鼠标悬停的那个类。

有什么想法吗?还有另一种方法可以做到这一点吗?


编辑:

感谢大家,我想出了这个:

$(document).ready( function () {   
    $('.li_class').hoverIntent(function(){
         $(this).removeClass('fade').siblings().animate({ opacity: 0.5 }, 500);
    },function(){
         $(this).siblings().andSelf().animate({ opacity: 1 }, 100);
    });
});

使用 hoverIntent 插件。

i have a few li elements created like this:

echo '<ul>';
foreach ($test as $value){
echo '<li class="li_class">.$value['name'].</li>';
}
echo '</ul>';

this will give me:

<li class="li_class">name1</li>
<li class="li_class">name2</li>
<li class="li_class">name3</li>
...

what i want to do is when i hover over a li element all other li elements to fade out about 50%.

i could have 2 classes and use jquery to change them:

.li_class{
background: #ccc;
} 

.fade{
opacity: .5;
}

bur i don't know how to tell jquery to add the .fade class to all other li but not the one i am hovering with the mouse.

any ideas? is there another way of doing this?


edit:

thanks to you all i came up with this:

$(document).ready( function () {   
    $('.li_class').hoverIntent(function(){
         $(this).removeClass('fade').siblings().animate({ opacity: 0.5 }, 500);
    },function(){
         $(this).siblings().andSelf().animate({ opacity: 1 }, 100);
    });
});

using the hoverIntent plugin.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

北斗星光 2025-01-08 07:15:57

试试这个。

$('.li_class').hover(function(){
     $(this).removeClass('fade').siblings().addClass('fade');
},function(){
     $(this).siblings().andSelf().removeClass('fade');
})

Try this.

$('.li_class').hover(function(){
     $(this).removeClass('fade').siblings().addClass('fade');
},function(){
     $(this).siblings().andSelf().removeClass('fade');
})
初心未许 2025-01-08 07:15:57
$('.li_class').hover(function() {
    $(this).siblings().addClass('fade');
}, function() {
    $(this).siblings().removeClass('fade');
});​

JSFiddle 演示

$('.li_class').hover(function() {
    $(this).siblings().addClass('fade');
}, function() {
    $(this).siblings().removeClass('fade');
});​

JSFiddle DEMO

灵芸 2025-01-08 07:15:57

像这样的事情应该做。使用悬停():

$('li.li_class').hover(function(){
$('li.li_class').not(this).animate('slow',{opacity: 0.5});
}, 
function(){
$('li.li_class').animate('slow',{opacity: 1});

});

Something like this should do. use hover():

$('li.li_class').hover(function(){
$('li.li_class').not(this).animate('slow',{opacity: 0.5});
}, 
function(){
$('li.li_class').animate('slow',{opacity: 1});

});
最美不过初阳 2025-01-08 07:15:57
$(".li_class").hover(function(){
  $(".li_class").not(this).fadeOut('slow', .5);
});
$(".li_class").hover(function(){
  $(".li_class").not(this).fadeOut('slow', .5);
});
马蹄踏│碎落叶 2025-01-08 07:15:57

如果你想让它执行得更快一点,请使用 on() 代替:

$(".li_class").on("mouseenter", function() {
    $(this).siblings().addClass("fade");
}).on("mouseleave", function() {
    $(this).siblings().removeClass("fade");
});

Well if you wanna make it execute slightly faster use on() instead:

$(".li_class").on("mouseenter", function() {
    $(this).siblings().addClass("fade");
}).on("mouseleave", function() {
    $(this).siblings().removeClass("fade");
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文