【问题标题】:How to toggle accordion based on tr selected?如何根据选择的 tr 切换手风琴?
【发布时间】:2019-02-18 11:27:22
【问题描述】:

我有一个表中的名称列表,当您单击选定的表行时,手风琴将弹出,但问题是当我单击一个名称时,所有手风琴将显示...

我只是把班级放在每一行。

<tr data-toggle="collapse" data-target=".dev-info" class="accordion-toggle devs">
    <td>
        <input type="hidden" class="devID" value="{{$dev->id}}">
        <strong>{{$dev->last_name}}</strong>
    </td>
    <td><strong>{{$dev->first_name}}</strong></td>
    <td> <strong>{{$dev->middle_name}}</strong></td>
    <td>    
        <div class="pull-right">
            <a href="{{url('profile-view',$dev->id)}}" class="btn btn-primary btn-block viewProfile"><i class="glyphicon glyphicon-user "></i><b>View Profile</b></a>
        </div>  
    </td>
</tr>
<tr>
    <td colspan="4" class="hiddentablerow">
        <div class="box-group  accordian-body collapse dev-info">
            <!-- we are adding the .panel class so bootstrap.js collapse plugin detects it -->
            <div class="panel box box-info">
                <div class="box-header with-border">
                    <h4 class="box-title">
                        <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
                            Additional Information
                        </a>
                    </h4>

                    <div>
                        <select class="star-rating">
                            @foreach($dev->child_user_rating as $rate)
                            <option value="$rate->rating">{{count($rate->parent_user_rating_desc) > 0 ? $rate->parent_user_rating_desc[0]->description : 'Not Set'}},</option>
                            @endforeach
                        </select>

                    </div>  

                    <input type="hidden" class="devID" value="{{$dev->id}}">
                </div>
                <div id="collapseOne" class="panel-collapse collapse in">
                    <div class="box-body">
                        <strong><i class="glyphicon glyphicon-envelope margin-r-5"></i> Email Address</strong>

                        <p class="text-muted">{{$dev->email}}</p>

                        <hr>

                        <strong><i class="fa fa-map-marker margin-r-5"></i> Location</strong>
                        <p class="text-muted">{{count($dev->child_user_location) > 0 ? $dev->child_user_location[0]->street : 'Not Set'}},{{count($dev->child_user_location) > 0 ? $dev->child_user_location[0]->brgy : 'Not Set'}},{{count($dev->child_user_location) > 0 ? $dev->child_user_location[0]->city : 'Not Set'}},{{count($dev->child_user_location) > 0 ? $dev->child_user_location[0]->province : 'Not Set'}},{{count($dev->child_user_location) > 0 ? $dev->child_user_location[0]->country : 'Not Set'}}</p>                                                    

                    </div>
                </div>
            </div>
            <div class="panel box box-danger">
                <div class="box-header with-border">
                    <h4 class="box-title">
                        <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo">
                        Skills
                        </a>
                    </h4>
                </div>
                <div id="collapseTwo" class="panel-collapse collapse">
                    <div class="box-body">

                    <strong><i class="fa fa-pencil margin-r-5"></i> Skills</strong>

                    <p>
                        @foreach($dev->child_user_specilization as $skill)
                        <span class="label label-success">{{$skill->sklill_desc->description}}</span>
                        @endforeach
                    </p>
                </div>
            </div>
            <div class="panel box box-success">
                <div class="box-header with-border">
                    <h4 class="box-title">
                        <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree">
                            Achievements
                        </a>
                    </h4>
                </div>
                <div id="collapseThree" class="panel-collapse collapse">
                    <div class="box-body">

                        <strong><i class="fa fa-file-text-o margin-r-5"></i> Achievements</strong>

                        <p>
                            @foreach($dev->child_user_achievement as $achievement)
                            <span class="label label-success">{{$achievement->name}}</span>
                            @endforeach
                        </p>

                    </div>
                </div>
            </div>
        </div>
    </td>
</tr>

我应该使用 JQuery 来过滤数据吗?如果我使用 JQuery 怎么办?因为纯 html 具有切换手风琴的类。

【问题讨论】:

  • 我不认识 @foreach{{$achievement-&gt;name}} 语法。这绝对不是纯 HTML。您必须指定您使用的模板引擎/平台。
  • 啊……别介意……那是 laravel 平台显示数据库中的数据……
  • 请指定您使用的框架或为您的问题添加标签。
  • @solomon 我正在使用 Laravel...

标签: javascript jquery laravel


【解决方案1】:

解决了伙计们...

我只是在 Jquery 中添加这个..

$('tr.devs').click(function(){
   $(this).nextUntil('tr.devs').css('display', function(i,v){
        return this.style.display === 'table-row' ? 'none' : 'table-row';
    });
});

【讨论】:

    【解决方案2】:

    问题是data-target=".dev-info" 将选择类dev-info 的所有元素

    您可能希望为您的折叠元素分配一个 id,例如 $dev-&gt;id,我猜它是唯一的。

    所以不是

    <div class="box-group  accordian-body collapse dev-info">
    

    使用

    <div id="dev-info-{{$dev->id}}" class="box-group  accordian-body collapse dev-info">
    

    而不是

    <tr data-toggle="collapse" data-target=".dev-info" class="accordion-toggle devs">
    

    使用

    <tr data-toggle="collapse" data-target="#dev-info-{{$dev->id}}" class="accordion-toggle devs">
    

    我没有你的代码,所以我做了这个例子

    <html lang="en">
      <head>
        <!-- Required meta tags -->
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
        <!-- Bootstrap CSS -->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
      </head>
      <body>
      
      <table border="1" cellpadding="5" width="50%">
    <tr data-toggle="collapse" data-target="#data1" class="accordion-toggle">
    	<td>Data 1</td>
    	<td>COL 2</td>
    	<td>COL 3</td>
    	<td>COL 4</td>
    </tr>
    <tr>
    	<td colspan="4">
    		<div id="data1" class="box-group  accordian-body collapse dev-info">Additional Information for Data 1</div>
    	</td>
    </tr>
    <tr data-toggle="collapse" data-target="#data2" class="accordion-toggle">
    	<td>Data 2</td>
    	<td>COL 2</td>
    	<td>COL 3</td>
    	<td>COL 4</td>
    </tr>
    <tr>
    	<td colspan="4">
    		<div id="data2" class="box-group  accordian-body collapse dev-info">Additional Information for Data 2</div>
    	</td>
    </tr>
    </table>
    
        <!-- Optional JavaScript -->
        <!-- jQuery first, then Popper.js, then Bootstrap JS -->
        <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
      </body>
    </html>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 2016-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多