当单击不同的li时,jQuery显示一个li

jQuery show an li when a different li is clicked

本文关键字:li 显示 一个 jQuery 单击      更新时间:2024-05-20

我有两个列表-第一个有名称、较大的图像和描述,第二个是小缩略图列表。当缩略图被点击时,我需要相应的li和更大的图像和文本只出现。因此,如果单击John Doe的缩略图,我需要显示较大的John Doe图像和文本,并确保隐藏较大的Bob Doe和Tom Doe图片和文本。我还想在加载页面时显示第一个较大的图像和描述。到目前为止,这是我的HTML和jQuery,谢谢!

  <div id="bios">
      <ul>
        <li>
            <img src="../img/jd.jpg" alt="John Doe">
            <br>
            <span class = "name">John Doe</span>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate diam ut porta pharetra. Nunc egestas ac turpis nec tempor.</p>
        </li>
        <li>
            <img src="../img/bd.png" alt="Bob Doe">
            <br>
            <span class = "name">Bob Doe</span>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate diam ut porta pharetra. Nunc egestas ac turpis nec tempor.</p>
        </li>
        <li>
            <img src= "../img/td.png" alt="Tom Doe">
            <br>    
            <span class = "name">Tom Doe</span>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vulputate diam ut porta pharetra. Nunc egestas ac turpis nec tempor.</p>
        </li>
       </ul>    
</div>
    <div id = "thumb">
      <ul>  
        <li>
            <img src="../img/jdthumb.png" alt="John Doe">
            <br>
            John Doe        
        </li>

        <li>
            <img src="../img/bdthumb.png" alt="Bob Doe">
            <br>
            Bob Doe
        </li>
        <li>    
            <img src= "../img/tdthumb.png" alt="Tom Doe">
            <br>
            Tom Doe
        </li>   
    </ul>
</div>

jQuery:

  $("#bios li").first().css( "display", "block" );
  $("#thumb li").on('click', function() {
      $( "#bios li" ).css( "display", "block");
      $(this).siblings('li').slideToggle();
  });
$("#thumb li").click(function() {
    var pos = $(this).index();
    $("#bios li").hide();
    $("#bios li").eq(pos).show();
    $(this).siblings("li").slideToggle();
});

试试这个:

css

#bios > ul > li{
    display: none;
}
#bios > ul > li:first-child{
    display: block;
}

javascript

$(function(){
    $('#thumb ul li').click(function(){
        var index = $(this).index();
        $('#bios ul li').hide();
        $('#bios ul li').eq(index).show();
    });
});

这是你的jsfiddle

Barmar的答案很好,只要你愿意在缩略图和图像之间始终保持一对一的对应关系,并使它们保持相同的标记顺序。如果没有,我建议您配对ID,例如

<li id="img-john">  <!-- or use `img-1`, `img-2`, etc. -->
    <img src="../img/jd.jpg" alt="John Doe">
    <!-- ... -->
</li>
<li id="img-bob">
    <img src="../img/bd.jpg" alt="Bob Doe">
    <!-- ... -->
</li> <!- ... -->
<!-- ... -->
<li id="thumb-john">
    <img src="../img/jdthumb.jpg" alt="John Doe">
    <!-- ... -->
</li>
<li id="thumb-bob">
    <img src="../img/bdthumb.jpg" alt="Bob Doe">
    <!-- ... -->
</li> <!- ... -->

然后你可以做这样的事情(未经测试):

$("#thumb li").click(function() {
    var id = this.id.replace("img", "thumb");
    $("#bios li").hide();
    $("#" + id).show();
    $(this).siblings("li").slideToggle();
});