Javascript 为什么类活动不处理第二个循环?

Javascript 为什么类活动不处理第二个循环?,javascript,php,jquery,html,laravel-5.3,Javascript,Php,Jquery,Html,Laravel 5.3,我的代码如下: <div class="row no-gutter"> <div class="col-md-3"> <h2 class="nav-cat-text">By Players</h2> </div> <div class="col-md-9 col-xs-12"> <div class="wrap-tabs"> <

我的代码如下:

<div class="row no-gutter">
    <div class="col-md-3">
        <h2 class="nav-cat-text">By Players</h2>
    </div>
    <div class="col-md-9 col-xs-12">
        <div class="wrap-tabs">
            <ul class="nav nav-tabs nav-cat">
                @foreach($categories as $category)
                    @if($category->parent_id == 1)
                    <li role="presentation" class="{{ $loop->first ? 'active' : '' }}"><a href="javascript:;" data-toggle="tab">{{ ucfirst($category->name) }}</a></li>
                    @endif
                @endforeach
            </ul>
        </div>
    </div>
</div>

<br>
<!-- By Types -->
<div class="row no-gutter">
    <div class="col-md-3">
        <h2 class="nav-cat-text">By Types</h2>
    </div>
    <div class="col-md-9 col-xs-12">
        <div class="wrap-tabs">
            <ul class="nav nav-tabs nav-cat">
                @foreach($categories as $category)
                    @if($category->parent_id == 2)
                    <li role="presentation" class="{{ $loop->first ? 'active' : '' }}"><a href="javascript:;" data-toggle="tab">{{ ucfirst($category->name) }}</a></li>
                    @endif
                @endforeach
            </ul>
        </div>
    </div>
</div>

玩家
    @foreach($categories作为$category) @如果($category->parent_id==1)
  • @恩迪夫 @endforeach

按类型
    @foreach($categories作为$category) @如果($category->parent_id==2)
  • @恩迪夫 @endforeach
按玩家和类型,每个都有五个标签

当代码被执行时,“玩家”上的第一个选项卡处于活动状态


但是为什么“按类型”上的第一个选项卡不处于活动状态?

如果在第一个循环中使用此条件,则看起来您犯了错误

 @if($category->parent_id == 1)
在第二个例子中,你用这个

 @if($category->parent_id == 2)

因此,在按类型分类的
中,第一个项目不处于活动状态

这里的主要问题是,您的第一个项目具有
父项id=1
,因此它是第一个循环,因此它处于活动状态。 但是在第二个foreach中,第一个项目没有
parent\u id=2
,因为它当然有前面提到的
parent\u id=1

解决方案: 在每个@foreach之前<代码>
并编辑如下代码:

@if($category->parent_id == 1)
    <li role="presentation" class="{{ $x == 0 ? 'active' : '' }}">
      <a href="javascript:;" data-toggle="tab">
           {{ ucfirst($category->name) }}
      </a>
    </li>
    <?php $x =1 ?>;
@endif
@if($category->parent\u id==1)
  • ; @恩迪夫

    第二个循环也是一样,我建议您使用来自laravel的集合

    首先,您可以使用如下所示的筛选函数来分离类别

    <?php
    
    $players = collect($categories)->filter(function($value){
        return $value->parent_id === 1;
    });
    
    $types = collect($categories)->filter(function($value){
        return $value->parent_id === 2;
    });
    ?>
    
    
    
    现在,您有了单独的类别,循环它们

    @foreach($players as $category)
        <li role="presentation" class="{{ $loop->first ? 'active' : '' }}">
            <a href="javascript:;" data-toggle="tab">{{ ucfirst($category->name) }}</a>
        </li>
    @endforeach
    
    @foreach($types as $category)
        <li role="presentation" class="{{ $loop->first ? 'active' : '' }}">
            <a href="javascript:;" data-toggle="tab">{{ ucfirst($category->name) }}</a>
        </li>
    @endforeach
    
    @foreach($category中的玩家)
    
  • @endforeach @foreach($类型作为$类别)
  • @endforeach
    您的意思是说类别是代码中的选项卡???@Sona,是的,类别是选项卡