为什么类激活不在第二个循环上工作?

时间:2017-02-20 05:05:33

标签: 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">
            <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>

按玩家和类型,每个都有五个标签

执行代码时,玩家的第一个标签处于活动状态

但为什么第一个按类型选项卡不活动?

3 个答案:

答案 0 :(得分:0)

如果条件在第一个循环中看起来你使用这个条件,它看起来就像你犯了错误

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

在第二个中你使用这个

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

所以By Types首先不活跃

答案 1 :(得分:0)

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

解决方案:

每个@foreach之前。 <?php $x= 0;?> 并编辑代码:

@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

和第二个循环相同

答案 2 :(得分:0)

我建议你使用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