【问题标题】:Show one div while hiding other divs with jquery when clicking on links单击链接时显示一个 div,同时使用 jquery 隐藏其他 div
【发布时间】:2013-01-18 08:27:52
【问题描述】:

我正在尝试创建一个包含一系列链接和多个 div 的导航方案。当我点击链接 1 时,我想显示 div 1。如果我点击链接 2,我想隐藏 1 并显示 2 等等。

我能够让以下代码工作。但是,当单击页面上的任何其他链接时,当前正在显示的 div 会消失/隐藏。

我尝试了各种解决方案,但一直无法解决这个问题。有人可以根据下面的代码提供一些关于可能发生的事情的见解。

HTML:

    <ul id="navigation">
        <li data-tab="property" class="activeitem settingLink active"><a href="#">Property Flyers</a></li>
        <li data-tab="openhouse" class="settingLink"><a href="#">Open House Flyers</a></li>
        <li data-tab="postcards" class="settingLink"><a href="#">Postcards</a></li>
        <li data-tab="mortgage" class="settingLink"><a href="#">Mortgage Flyers</a></li>
        <li data-tab="recruiting" class="settingLink"><a href="#">Recruiting Flyers</a></li>
    </ul>


    <div id="property" class="span-18 last"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" /></div>
    <div id="openhouse" class="span-18 last"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" /></div>
    <div id="Postcards" class="span-18 last"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" /></div>
    <div id="Mortgage" class="span-18 last"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" /></div>
    <div id="Recruiting" class="span-18 last"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" /></div>

JavaScript:

$('a').on('click', function(e) {
    e.preventDefault();
    var $li = $(this).closest('li');

    var tab = $li.data('tab');
    var current = $('.active.settingLink').data('tab');

    $('#' + current).fadeOut('fast', function() {
        //Slide the new div down
        $('#' + tab).fadeIn();
    });

    //Remove active class from current link
    $('.active.settingLink').removeClass('active');

    $li.addClass('active');
});

【问题讨论】:

  • 您正在寻找的功能称为accordian。您可以尝试搜索执行相同操作的 jquery 插件。

标签: jquery html hide show


【解决方案1】:

示例:http://jsfiddle.net/9UPQj/

<ul id="navigation">
        <li data-tab="property" class="activeitem settingLink active"><a href="#">Property Flyers</a></li>
        <li data-tab="openhouse" class="settingLink"><a href="#">Open House Flyers</a></li>
        <li data-tab="postcards" class="settingLink"><a href="#">Postcards</a></li>
        <li data-tab="mortgage" class="settingLink"><a href="#">Mortgage Flyers</a></li>
        <li data-tab="recruiting" class="settingLink"><a href="#">Recruiting Flyers</a></li>
    </ul>


    <div id="property" class="span-18 last" rel="1"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" />1st</div>
    <div id="openhouse" class="span-18 last" rel="2"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" />2nd</div>
    <div id="Postcards" class="span-18 last" rel="3"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" />3rd</div>
    <div id="Mortgage" class="span-18 last" rel="4"><img src="images/templates/thumbs/property84.jpg" width="143" height="194" />4th</div>

JS:

$('#navigation a').on('click', function(e) {
    e.preventDefault();
    var index = $('a').index(this) + 1;

    $('div').each(function(){

        if($(this).attr('rel') == index){
            $(this).addClass('active');
            $(this).show();
        }else{
            $(this).removeClass('active');
            $(this).hide();
        }
    });

});

【讨论】:

    【解决方案2】:

    试试这个

    http://jsfiddle.net/6QJJp/1/

    我想这就是你需要的

    您需要根据您的要求修复CSS

    【讨论】:

      【解决方案3】:

      $('a') 定位页面中的每个&lt;a&gt; 标签,您需要更具体的选择器:

      $("#navigation a');
      

      【讨论】:

      • 谢谢,当然可以。我想我看得太久了,看不到明显的东西。再次感谢您的帮助。
      【解决方案4】:
      $("#navigation a").on(...
      

      就是将点击事件仅绑定到您的导航链接;您的代码将此事件绑定到它将在文档正文中找到的所有链接,因此您只需要一个更精确的选择器

      nb:你应该委托

      【讨论】:

      • 感谢您的快速回复。
      猜你喜欢
      • 2015-01-16
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多