jQuery Parent or Find Method



我有一个照片库。每张照片都有一个列表,当用CSS格式化时,看起来像三个大方块(这是我的评级系统)。当用户将鼠标悬停在方块上时,列表下方会显示说明。这适用于单张照片,但是当我将鼠标悬停在第一张照片的正方形上时,将显示所有照片的描述。

<div class="ratingContainer">
    <ul class="rating">
        <li class="one"></li>
        <li class="two"></li>
        <li class="three"></li>
    </ul>
    <div class="ratingDesc1">Bad</div>
    <div class="ratingDesc2">Normal</div>
    <div class="ratingDesc3">Good</div>
</div>

我的jQuery...

$(".rating li.one").hover(function(){
    $(".ratingDesc1").show();
}, function(){
    $(".ratingDesc1").hide();
});

$(".rating li.two").hover(function(){
    $(".ratingDesc2").show();
}, function(){
    $(".ratingDesc2").hide();
});

我已经阅读了这个,似乎我需要使用 .parent 或 .find 方法,但所有尝试都没有奏效。

感谢您的帮助!

你需要上升然后回到 DOM:

$(".rating li.one").hover(function() {
    $(this).parents('.ratingContainer').find(".ratingDesc1").show();
}, function() {
    $(this).parents('.ratingContainer').find(".ratingDesc1").hide();
});​

您还可以使用更通用的方法,而不是为每个评级编写单独的案例,请使用以下内容:

$(".rating li").hover(function() {
    $(this).parents('.ratingContainer').find('div:eq(' + $(this).index() + ')').show();
}, function() {
    $(this).parents('.ratingContainer').find('div:eq(' + $(this).index() + ')').hide();
});​

要在泛型方法中执行此操作,请尝试此操作

$(".rating li").hover(function(){
    $(".ratingDesc:eq(" + $(".rating li").index(this) + ")").show();
}, function(){
    $(".ratingDesc:eq(" + $(".rating li").index(this) + ")").hide();
});

您可以重用代码,而不是通过基于元素的索引来硬编码名称。我设置了一个JSFiddle供您查看。

http://jsfiddle.net/3pLr5/6/

查看此演示,希望它就是您正在寻找的,并且比您的示例更轻量级。

最新更新