【问题标题】:How to do Onclick Button show and Hide in foreach case using jquery or javascript?如何使用 jquery 或 javascript 在 foreach 案例中显示和隐藏 Onclick 按钮?
【发布时间】:2016-10-19 07:56:57
【问题描述】:

单击时我使用手风琴来关闭和打开内容。

它有一个条形部分,当点击它时,下面的内容会像这个例子一样显示:http://jeevanscientific.com/resources.html

我需要在每个栏的右侧添加一个向上按钮/向下按钮。
单击特定栏后,只有该栏显示向下按钮。就像按钮点击隐藏和显示向下和向上按钮一样。

问题是我正在使用 foreach 来显示项目。我该如何实现这个场景?

这是我的 HTML:

foreach (var i in footerPage.StaticPagePersons)
{
    <H1>@Html.Raw(@i.Type) </H1>
    <div class="accordion" id="accordion2">
        <div class="accordion-group">
            <div class="accordion-heading datalist" id="" data-toggle="collapse" data-parent="#accordion2" href="#@i.Id">
                <i class="fa fa-chevron-down table-middle" aria-hidden="true"></i>
                <i class="fa fa-chevron-up table-middle" aria-hidden="true"></i>
                <h1 class="accordion-toggle table-middle">
                    @Html.Raw(@i.Name)
                </h1>
            </div>
            <div id="@i.Id" class="accordion-body collapse out">
                <div class="accordion-inner">
                    <img ng-src="@i.ImagePath" alt="logo" class="img-thumbnail img-wrap content-image" />
                    <h1>@Html.Raw(@i.Name)</h1>
                    <h3>@Html.Raw(@i.Title)</h3>
                    <br />
                    @Html.Raw(@i.BioDetail)
                </div>
            </div>
        </div>
    </div>
}

Clarification

每个选项卡的右侧..这是要求...单击时应显示向上按钮,否则应显示向下按钮

【问题讨论】:

  • 我是否理解正确,您创建了一组具有相同id="accordion2" 的手风琴?每个手风琴是否只包含一个面板?你能显示你得到的 HTML 代码吗?

标签: javascript jquery css twitter-bootstrap razor


【解决方案1】:
foreach (var i in person.Persons)
{
    <H1>@Html.Raw(@i.Type) </H1>
    <div class="accordion" id="accordion2">
        <div class="accordion-group">
            <div class="accordion-heading datalist" id="" data-toggle="collapse" data-parent="#accordion2" href="#@i.Id">
                <i class="fa fa-chevron-down table-middle" aria-hidden="true"></i>

                <h1 class="accordion-toggle table-middle">
                    @Html.Raw(@i.Name)
                </h1>
            </div>
            <div id="@i.Id" class="accordion-body collapse out">
                <div class="accordion-inner">
                    <img ng-src="@i.ImagePath" alt="logo" class="img-thumbnail img-wrap content-image" />
                    <h1>@Html.Raw(@i.Name)</h1>
                    <h3>@Html.Raw(@i.Title)</h3>
                    <br />
                    if(your condition){
                        @Html.Raw(@i.BioDetail) //it will show only if your ncondtion satisfied
                    }
                </div>
            </div>
        </div>
    </div>
}

  <script>
    $(document).ready(function () {
        $('.collapse').on('shown.bs.collapse', function () {
            $(this).parent().find(".fa-chevron-down").removeClass("fa-chevron-down").addClass("fa-chevron-up");
        });

        $('.collapse').on('hidden.bs.collapse', function () {
            $(this).parent().find(".fa-chevron-up").removeClass("fa-chevron-up").addClass("fa-chevron-down");
        });
    });
</script>

【讨论】:

  • 您的解决方案如何帮助根据选项卡的状态更改按钮?
  • have changed the essence of your answer 在我发表评论后。到目前为止,您只是建议使用if 条件。此条件在创建页面的阶段起作用。因此,在页面加载后切换按钮无济于事。所以你的旧答案并没有解决这个问题。在这种情况下,对我的评论的简洁回答看起来令人不快。
  • 我认为她可能的意思是她已经更正了代码,以根据上面评论中的问题解释它是如何工作的。
  • 她让我做点别的,我更新了代码的实际问题。
【解决方案2】:

如果上面的链接显示了一个工作示例,您可以使用纯 css 执行此操作。

你需要的是:

.accordion-heading .fa {
  display: none;
  //Other css required for the fa display in general can go here.
}

.AccordionPanelOpen .fa-chevron-up {
  display: block;
}

.AccordionPanelClosed .fa-chevron-down {
  display: block;
}

【讨论】:

    【解决方案3】:

    目前的答案并没有真正回答你的问题,我按照@Arathi 的回答,这是通过 CSS 完成的,当引导手风琴折叠与否时,它将有一个附加类。 &lt;div class="accordion-heading datalist" id="" data-toggle="collapse" data-parent="#accordion2" href="#@i.Id"&gt; 规则将在 .collapsed 类和关闭之间切换。所以当这个 div 有 collapsed 类时,你想显示 .fa-chevron-down 否则你想显示 .fa-chevron-up。您可以通过以下代码进行管理:

    .accordion-header .fa-chevron-down {
      display: block;
    }
    .accordion-header .fa-chevron-up {
      display: none;
    }
    .accordion-header.collapsed .fa-chevron-up {
      display: block;
    }
    .accordion-header.collapsed .fa-chevron-down {
      display: none;
    }
    

    现在,当 .accordion-header 将具有 collapsed 类时,上 V 形将显示,而下 V 形将隐藏。如果您想添加过渡或类似的东西,您也可以使用opacity 0 - 1。期待您的回复。

    【讨论】:

      【解决方案4】:

      对于您的问题,我有一个 CSS 解决方案。而且我注意到您的代码中有几个问题。

      1) 几个问题

      1. 您当前的代码创建了一组具有相同id="accordion2" 的手风琴。这是不对的。 id 必须是唯一的。

      2. 每个手风琴只包含一个面板。这很奇怪。已经发明了手风琴来管理多个面板。

      3. 您已经替换了 Bootstrap 类。例如,您的代码使用.accordion-group.accordion-heading 而不是.panel-group.panel-heading。我需要查看您的代码以了解它们之间的区别。

      2) 如何使用 CSS 切换图标

      让我们从标准的Accordion example 开始。

      您可以将FontAwesome图标添加为the :after pseudo-element的内容:

      .panel-title > a:after {
        content: "\f078"; /* fa-chevron-down */
        font-family: 'FontAwesome';
      }
      

      Bootstrap 使用the aria-expanded attribute 作为控制元素。

      插件将根据可折叠元素是否已打开或关闭自动切换此属性。

      所以你可以通过 CSS 切换图标:

      .panel-title > a[aria-expanded="true"]:after {
        content: "\f077"; /* fa-chevron-up */
      }
      

      请查看演示。是你想要达到的吗? https://jsfiddle.net/glebkema/1wx4ubvc/

      @import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css');
      @import url('https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css');
      
      .panel-title > a {
        display: block;
        position: relative;
      }
      .panel-title > a:after {
        content: "\f078"; /* fa-chevron-down */
        font-family: 'FontAwesome';
        position: absolute;
        right: 0;
      }
      .panel-title > a[aria-expanded="true"]:after {
        content: "\f077"; /* fa-chevron-up */
      }
      <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
        <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="heading-1">
            <h4 class="panel-title">
              <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-1" aria-expanded="false" aria-controls="collapse-1">
                Item 1
              </a>
            </h4>
          </div>
          <div id="collapse-1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-1">
            <div class="panel-body">
                Text 1
            </div>
          </div>
        </div>
        <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="heading-2">
            <h4 class="panel-title">
              <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-2" aria-expanded="false" aria-controls="collapse-2">
                Item 2
              </a>
            </h4>
          </div>
          <div id="collapse-2" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-2">
            <div class="panel-body">
              Text 2
            </div>
          </div>
        </div>
        <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="heading-3">
            <h4 class="panel-title">
              <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-3" aria-expanded="false" aria-controls="collapse-3">
                Item 3
              </a>
            </h4>
          </div>
          <div id="collapse-3" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-3">
            <div class="panel-body">
              Text 3
            </div>
          </div>
        </div>
      </div>
      
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

      3) 试试这个代码

      <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
      
      foreach (var i in footerPage.StaticPagePersons)
      {
        <div class="panel panel-default">
          <div class="panel-heading" role="tab" id="heading-@i.Id">
            <h4 class="panel-title">
              <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse-@i.Id" aria-expanded="false" aria-controls="collapse-@i.Id">
                @Html.Raw(@i.Type)
              </a>
            </h4>
          </div>
          <div id="collapse-@i.Id" class="panel-collapse collapse" role="tabpanel" aria-labelledby="heading-@i.Id">
            <div class="panel-body">
              <img ng-src="@i.ImagePath" alt="logo" class="img-thumbnail img-wrap content-image" />
              <h1>@Html.Raw(@i.Name)</h1>
              <h3>@Html.Raw(@i.Title)</h3>
              <br />
              @Html.Raw(@i.BioDetail)
            </div>
          </div>
        </div>
      }
      
      </div>
      

      并使用这个 CSS:

      .panel-title > a {
        display: block;
        position: relative;
      }
      .panel-title > a:after {
        content: "\f078"; /* fa-chevron-down */
        font-family: 'FontAwesome';
        position: absolute;
        right: 0;
      }
      .panel-title > a[aria-expanded="true"]:after {
        content: "\f077"; /* fa-chevron-up */
      }
      

      【讨论】:

        【解决方案5】:
        Try this code jquery :
        
        
            $('.accordion-group h1').click(function(){
        
            $(this).parent('.accordion').find('.accordion-body').slideToggle();
        
            });
        
        
        buttons should be like this
        <ul>
          <li>button1</li>
          <li>button2</li>
          <li>button3</li>
        </ul>
        
        
        <script>
        $(document).ready(function(){
        $('li').click(function(){
          var pos =  $( "li" ).index(this);
           $('panel-group panel-body:nth-child('+pos+')').slideToggle();
        });
        });
        </script>
        

        【讨论】:

        • 我需要的是切换按钮。一切正常。上下按钮需要我自己添加
        • 根据您的要求jeevanscientific.com 我得到了。按钮是什么意思?它在哪里?
        • 每个选项卡的右侧.. 那是必需的...单击时应显示向上按钮,否则显示向下按钮
        【解决方案6】:

        你可以试试这样的

        jquery .toggle() 显示(如果元素被隐藏)或隐藏(如果元素被显示)匹配的元素。所以在这里,当你点击 标签时,我们会切换(显示/隐藏)它之后的元素(glyphicon)。

              $('.panel-heading a').click(function(){
                $(this).next('span.glyphicon').toggle();
              })
        <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.css" />
        
        
        <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
              <div class="panel panel-default">
                <div class="panel-heading" role="tab" id="headingOne">
                  <h4 class="panel-title">
                    <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                  Collapsible Group Item #1
                </a>
                <span class="glyphicon glyphicon-menu-down pull-right" aria-hidden="true" style="display: block;"></span>
                  </h4>
                </div>
                <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
                  <div class="panel-body">
                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
              </div>
                </div>
              </div>
              
              
              <div class="panel panel-default">
                <div class="panel-heading" role="tab" id="headingTwo">
                  <h4 class="panel-title">
                    <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                  Collapsible Group Item #2
                </a>
                <span class="glyphicon glyphicon-menu-down pull-right" aria-hidden="true" style="display: none;"></span>
                  </h4>
                </div>
                <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
                  <div class="panel-body">
                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
              </div>
                </div>
              </div>
              
              
              <div class="panel panel-default">
                <div class="panel-heading" role="tab" id="headingThree">
                  <h4 class="panel-title">
                    <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
                  Collapsible Group Item #3
                </a>
                <span class="glyphicon glyphicon-menu-down pull-right" aria-hidden="true" style="display: none;"></span>
                  </h4>
                </div>
                <div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
                  <div class="panel-body">
                Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
              </div>
                </div>
              </div>
            </div>

        【讨论】:

        • $(this).next('span.glyphicon').toggle();为什么此代码用于?你能解释一下吗?
        • 在你的情况下没有向上按钮
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-30
        • 1970-01-01
        相关资源
        最近更新 更多