2016-10-17 16 views
0

動的に生成されるテーブルで動作するように特定のテーブル行を表示したり非表示にしたりしようとしています。テーブル自体はララベルコレクションからデータを取得します。
この表の背後にあるアイデアは、ユーザーにラベルグループを表示させたいということです。これらのグループには、そのグループ番号で0個、1個、またはそれ以上のラベルを付けることができます。適切なグループの下にラベルを表示します。次のようにJareryはlaravel動的テーブルのテーブル行を非表示にして表示します

コードは次のとおり

<table id="labeltable" class="table table-bordered"> 
    @foreach($labelgroups as $labelgroup) 
    @foreach($labelgroup->all() as $groep) 
     <!-- Als de laatst ingevulde groep door de foreach loop verschillend is van de huidige groep, vul die dan in. 
      Anders vul je deze en de rest van de headers niet in en wacht je tot er een nieuwe header is. --> 
     @if($lastgroup !== $groep->groep) 
     <thead> 
      <tr> 
      <td></td><!-- Empty line --> 
      </tr> 
      <tr style="background-color: #5cb85c"> 
      <th>{{ $groep->groep }}</th> 
      <!-- Laatst ingevulde groep bepalen --> 
      {{ $lastgroup = $groep->groep }} 
      @if($event->present()->nl) 
       <th>{{Initialise::lang('lbl.algemeen.taal_1')}}</th> 
      @endif 
      @if($event->present()->fr) 
       <th>{{Initialise::lang('lbl.algemeen.taal_2')}}</th> 
      @endif 
      @if($event->present()->en) 
       <th>{{Initialise::lang('lbl.algemeen.taal_3')}}</th> 
      @endif 
      @if($event->present()->de) 
       <th>{{Initialise::lang('lbl.algemeen.taal_4')}}</th> 
      @endif 
      </tr> 
     </thead> 
     @endif 
    @endforeach 

    @foreach($labelgroup->all() as $label) 
     <tbody> 
     <tr class="{{ $groep->groep }}"> 
      <td>{{ $label->label }}</td> 
      @if($event->present()->nl) 
      <td>{!! Form::textarea('taal_1',$label->taal_1, array('id' => $label->id.'_1','rows' => 2, 'data-taal' => 'taal_1', 'data-url' => LinkHelper::route('label.update',$label->id),'class' => 'form-control', 'onchange' => 'initialise.update("'.LinkHelper::route('label.update',$label->id).'","taal_1",this.value);')) !!}</td> 
      @endif 
      @if($event->present()->fr) 
      <td>{!! Form::textarea('taal_2',$label->taal_2, array('id' => $label->id.'_2','rows' => 2, 'data-taal' => 'taal_2', 'data-url' => LinkHelper::route('label.update',$label->id),'class' => 'form-control', 'onchange' => 'initialise.update("'.LinkHelper::route('label.update',$label->id).'","taal_2",this.value);')) !!}</td> 
      @endif 
      @if($event->present()->en) 
      <td>{!! Form::textarea('taal_3',$label->taal_3, array('id' => $label->id.'_3','rows' => 2, 'data-taal' => 'taal_3','data-url' => LinkHelper::route('label.update',$label->id),'class' => 'form-control', 'onchange' => 'initialise.update("'.LinkHelper::route('label.update',$label->id).'","taal_3",this.value);')) !!}</td> 
      @endif 
      @if($event->present()->de) 
      <td>{!! Form::textarea('taal_4',$label->taal_4, array('id' => $label->id.'_4','rows' => 2, 'data-taal' => 'taal_4','data-url' => LinkHelper::route('label.update',$label->id),'class' => 'form-control', 'onchange' => 'initialise.update("'.LinkHelper::route('label.update',$label->id).'","taal_4",this.value);')) !!}</td> 
      @endif 
     </tr> 
     </tbody> 
    @endforeach 
    @endforeach 
</table> 

表コードは、次の表を生成します。

Table example

列と行を動的に私はどのように私は、ヘッダー<th>要素をクリックしたときと言うことができたでクリックイベントを行うには見当がつかない挿入されているので:イメージは、テーブルの一部であります下にある<td>要素(<th>グループに属するラベルを表す)を隠すことができます。 <th>には、その 'グループ'に対応する行の量が異なることがあります。

誰かが私にこれをどうするべきかについてのいくつかの指標を教えてもらえますか?

+0

を切り替えるとCSSでます。 HiddenRows {display:none}とjavascriptではこのクラスを削除できます。 –

+0

問題は、ヘッダの下の行にどのように接近するのかわからないということです。なぜなら、どこか別の行を定義し、私が知る限り、DOMを通してそれらに到達できないからです。 –

+0

これらの行にユーザー操作がありますか?はいの場合は、隠す行を特定するための何かが必要です。すべての行または特定の行を非表示にしますか? –

答えて

0
$('.class').on('click',function(){ 
    $(this).toggleClass('hiddenRow'); 
}) 

これはクラス.classを持つ任意の要素にクリックイベントを適用すると、あなたがそれをクリックすると、それだけの を追加したクラスに hiddenRow

+0

私はすべてのtrタグを閉じたくないので、このようなクラスでは動作しません。これがうまくいかない理由は、ループ - > @foreach($ labelgroup as $ groep)でテーブルに要素を追加するため、これらの要素に私が使うことができる一意のクラスを与える方法が見つからないように見えるからですイベントハンドリングを行う。 –

+0

TRごとに一意のクラスは必要ありません。すべてのTRに1つのクラスを使用して非表示にしてから、そのクラスの行をクリックすると、クラスを行から削除します。クリックする行だけを表示すると、ループを実行してあなたがもう一度それを隠したいなら、クラスバック – WebKenth

関連する問題