使用 jQuery 事件显示和隐藏

发布于 2024-12-17 05:15:48 字数 924 浏览 1 评论 0原文

有几个高级 jQuery 插件可以通过相应的 id 或类过滤

。这确实是基于一个简单的 jQuery 想法,但我不知道如何实现它。考虑一个用于显示/隐藏内容的菜单

<ul id="filters" class="menu" indicator="filter">
 <li><a href="#filter" indicator="*" class="selected">All</a></li>
 <li><a href="#filter" indicator=".first">First</a></li>
 <li><a href="#filter" indicator=".third">Third</a></li>
</ul>

,我们想要控制内容的显示:

<div class="box first">Something</div>
<div class="box first third">Something</div>
<div class="box third">Something</div>

执行此操作的最简单的 jQuery Javascript 代码是什么?

默认情况下,所有

都会显示,当我们从菜单中单击
  • (例如FIRST)时,jQuery将过滤< ;div> 仅显示该类为“第一个”的
  • There are several advanced jQuery plugins which filter <div>s by corresponding id or class. This is indeed based on a simple jQuery idea, but I am not sure how to implement it. Consider a menu to show/hide the content as

    <ul id="filters" class="menu" indicator="filter">
     <li><a href="#filter" indicator="*" class="selected">All</a></li>
     <li><a href="#filter" indicator=".first">First</a></li>
     <li><a href="#filter" indicator=".third">Third</a></li>
    </ul>
    

    and we want to control the display of contents:

    <div class="box first">Something</div>
    <div class="box first third">Something</div>
    <div class="box third">Something</div>
    

    What is the simplest jQuery Javascript code to do so?

    By default, all <div>s are shown, when we click on a <li> from menu (e.g. FIRST), jQuery will filter the <div>s to only show <div>s in which the class is "first".

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

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

    发布评论

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

    评论(4

    知你几分 2024-12-24 05:15:49

    不要使用属性“indicator”,因为它不存在。使用如下所示的类元素。也不需要 A 元件。

    <ul id="filters" class="menu">
     <li class="selected all">All</li>
     <li class="first">First</li>
     <li class="third">Third</li>
    </ul>
    

    然后你的脚本

    // hide all divs 
    $('div.box').css('display','hidden');
    
    // add click handler on control list
    $('ul#filters li').click(function() {
    
       var classList =$(this).attr('class').split(/\s+/);
        $.each( classList, function(index, item){
            if (item != 'selected') {
               $('div.'+item).css('display','block');
            }
        });
    
    });
    

    Don't use attribute "indicator" as it doesn't exist. Use the class element as below. Also the A elements are not needed.

    <ul id="filters" class="menu">
     <li class="selected all">All</li>
     <li class="first">First</li>
     <li class="third">Third</li>
    </ul>
    

    Then your script

    // hide all divs 
    $('div.box').css('display','hidden');
    
    // add click handler on control list
    $('ul#filters li').click(function() {
    
       var classList =$(this).attr('class').split(/\s+/);
        $.each( classList, function(index, item){
            if (item != 'selected') {
               $('div.'+item).css('display','block');
            }
        });
    
    });
    
    林空鹿饮溪 2024-12-24 05:15:49
    $(function(){
      $('#filters li a').live('click', function(){
        $('.box').hide();
    
        indirector = $(this).attr('indicator');
    
        indirector = indirector.substring(1);
    
        if(indirector == '')
          $('.box').show();   
        else
          $('div.' + indirector).show();
    
      });
    });
    

    参考

    $(function(){
      $('#filters li a').live('click', function(){
        $('.box').hide();
    
        indirector = $(this).attr('indicator');
    
        indirector = indirector.substring(1);
    
        if(indirector == '')
          $('.box').show();   
        else
          $('div.' + indirector).show();
    
      });
    });
    

    Reference

    新雨望断虹 2024-12-24 05:15:49

    使用 class 属性而不是 indicator 并尝试以下操作:

    $('#filters li').click(function(){
        $('div.' + $(this).attr('class')).show();
    });
    

    要使其正常工作,您必须将 all 类分配给您的第一个 LI,如下所示以及您所有的 DIV。希望这有帮助!

    Use the class attribute instead of indicator and try the following:

    $('#filters li').click(function(){
        $('div.' + $(this).attr('class')).show();
    });
    

    for this to work you would have to assign an all class to your first LI as well as all of your DIVs. Hope this helps!

    城歌 2024-12-24 05:15:49

    试试这个代码,

    $('#filters li').click(function(){
        $("div.box").hide();
        $('div.box' + $(this).children('a').attr('indicator')).show();
    });
    

    try this code,

    $('#filters li').click(function(){
        $("div.box").hide();
        $('div.box' + $(this).children('a').attr('indicator')).show();
    });
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文