请如何淡入淡出每个列表元素内的相关链接

发布于 2024-10-29 04:57:46 字数 530 浏览 3 评论 0原文

我是 jQuery 的新手,我正在尝试制作一个简单的淡入淡出动画来实践我到目前为止所学到的知识,不幸的是我没有得到我想要的结果 我有一个列表元素,每个 li 元素内都有一个链接: 我想要的:当我滚动到 li 元素上时,我希望相对的 链接淡入,当我推出时我希望它淡出。这是我的代码如下:

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").each(function(){

        $(this).mouseenter(function(){
            $("a.viewAllProductsLink").fadeIn("slow");    
        })
        .mouseleave(function(){
            $("a.viewAllProductsLink").fadeOut("slow");
        });
    });    
});

I'm new to jQuery, I'm trying to make a simple fadein fadeout animation to make in practice what I've learned so far, unfortunately I'm not getting the result that I want
I have a list elements, within each li element there is a link:
What I want: when I roll over a li element, I want the relative <a> link to fade in and when I roll out I want it to fade out. This is my code below:

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").each(function(){

        $(this).mouseenter(function(){
            $("a.viewAllProductsLink").fadeIn("slow");    
        })
        .mouseleave(function(){
            $("a.viewAllProductsLink").fadeOut("slow");
        });
    });    
});

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

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

发布评论

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

评论(1

淡写薰衣草的香 2024-11-05 04:57:46

当您调用 $('a.viewAllProductsLink') 时,您选择的是该类的所有链接,而您想要做的只是选择滚动元素内的链接。为此,请使用 $(this).find()

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").each(function(){

        $(this).mouseenter(function(){
            $(this).find("a.viewAllProductsLink").fadeIn("slow");  
        })
        .mouseleave(function(){
            $(this).find("a.viewAllProductsLink").fadeOut("slow");
        });
    }); 
});

此外,此处使用 .each() 效率很低,因为所有元素的行为都相同,并且您可能想在动画之前使用 .stop() 来保持当您快速将鼠标悬停在元素上和离开元素多次时,动画队列不会建立:

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").mouseenter(function(){
            $(this).find("a.viewAllProductsLink").stop(true,true).fadeIn("slow");  
        })
        .mouseleave(function(){
            $(this).find("a.viewAllProductsLink").stop(true,true).fadeOut("slow");
        });
    }); 
});

When you call $('a.viewAllProductsLink') you're selecting all of the links with that class when what you want to do is select only the link within the element you're rolling over. To do that, use $(this).find():

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").each(function(){

        $(this).mouseenter(function(){
            $(this).find("a.viewAllProductsLink").fadeIn("slow");  
        })
        .mouseleave(function(){
            $(this).find("a.viewAllProductsLink").fadeOut("slow");
        });
    }); 
});

Furthermore, it's innefficient to use .each() here since all of the elements will behave the same, and you probably want to use .stop() before the animation to keep the animation queue from building up when you hover over and off the element many times quickly:

$(function(){
    $("a.viewAllProductsLink").hide();
    $(".scrollable ul>li").mouseenter(function(){
            $(this).find("a.viewAllProductsLink").stop(true,true).fadeIn("slow");  
        })
        .mouseleave(function(){
            $(this).find("a.viewAllProductsLink").stop(true,true).fadeOut("slow");
        });
    }); 
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文