【问题标题】:jQuery Show and Hide multiple divs with a selected classjQuery 显示和隐藏选定类的多个 div
【发布时间】:2012-10-30 21:38:07
【问题描述】:

我需要能够根据“选择”的 href 类来显示和隐藏 div 我在下面有一些代码:

http://jsfiddle.net/XwN2L/722/

我需要删除上面小提琴中的“全部”选项。

所以基本上当一个href有选择的类时,会显示href的两个链接,然后当用户点击另一个href时,它会隐藏以前的链接并显示带有“已选择”类的新链接

当他们单击链接时,所选类会发生变化,并且按钮会相应地隐藏和显示?

几乎只需要最后一点的帮助。

<div class="buttons">
 <a id="showall">All</a>
 <a class="showSingle" target="1">Div 1</a>
 <a class="showSingle selected" target="2">Div 2</a>
 <a class="showSingle" target="3">Div 3</a>
 <a class="showSingle" target="4">Div 4</a>
</div>

<div id="div1" class="targetDiv">
 <a href="#" class="button3">1a</a>
 <a href="#" class="button3">1b</a>
</div>

<div id="div2" class="targetDiv">
 <a href="#" class="button3">2a</a>
 <a href="#" class="button3">2b</a>
</div>

<div id="div3" class="targetDiv">
  <a href="#" class="button3">3a</a>
  <a href="#" class="button3">3b</a>
</div>

<div id="div4" class="targetDiv">popup COMPLETE</div>

<script>
 jQuery(function(){
    jQuery('.showSingle').click(function(){
          jQuery('.targetDiv').hide();
          jQuery('#div'+$(this).attr('target')).show();
     });
 });​
<script>

干杯

【问题讨论】:

    标签: jquery html css toggle


    【解决方案1】:

    你可以使用data-*属性:

    <div class="buttons">
      <a  id="showall" data-target="all" >All</a>
      <a  class="showSingle" data-target="1">Div 1</a>
      <a  class="showSingle selected" data-target="2">Div 2</a>
      <a  class="showSingle" data-target="3">Div 3</a>
      <a  class="showSingle" data-target="4">Div 4</a>
    </div>
    

    var $target = $('.targetDiv'); // caching object for better performance
    
    $('.buttons a').click(function(e) {
        e.preventDefault();
        $(this).addClass('selected').siblings().removeClass('selected');
        var target = $(this).data('target');
        if (target === 'all') {
            $target.show();
        } else {
            $target.hide().filter('#div' + target).show();
        }
    });
    

    http://jsfiddle.net/fKHsB/

    【讨论】:

    • 是否可以去掉“全部”选项?看起来不错,虽然队友欢呼
    • @John 为什么,'all' 丑陋吗? :)
    • 大声笑,如果有意义的话,就不需要一次显示所有链接——在“结果”区域。只需要 div 1-4
    • @John 如果要过滤前4个div元素,可以使用filter方法和:lt选择器,将$target.show();替换为$target.filter(':lt(4)');
    • @John 对不起,John 似乎我误解了你的问题,你想删除 all 锚链接吗?你能改写你的问题吗?请。您当前的代码不这样做吗?
    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2015-10-10
    • 2010-11-27
    相关资源
    最近更新 更多