2017-02-28 9 views
0

私はテーブルのtrをクローンしました。 は私がクローンテーブルの属性を変更するtr

などTR_ToCities_2にTR_FromCities_2 またはTR_ToCities_1にTR_FromCities_1よう_1で各IDを変更したい

var select = $("#CloneThisTR").clone(true); 

により、TDの属性

<tr style="cursor:move" id="CloneThisTR"> 
        <td> 
         <div class="input-group" id="TP_tr_dest_from_city_1"> 
          {{{ Form::select('TP_tr_dest_from_city_multicity', [''=>'* From City']+$TR_FromIndianCities , null,array('id'=>'TR_FromCities_1','class'=>'form-control requestDiv','name'=>'TP_tr_dest_from_city_multicity_1','title'=>'Enter travel from city',)) }}} 
         </div> 
        </td> 
        <td> 
         <div class="input-group" id="TP_tr_dest_to_city_1"> 
          {{{ Form::select('TP_tr_dest_to_city_multicity', [''=>'* To City']+$TR_FromIndianCities , null,array('id'=>'TR_ToCities_1','class'=>'form-control requestDiv','name'=>'TP_tr_dest_to_city_multicity','title'=>'Enter travel from city',)) }}} 
         </div> 
        </td> 
        <td> 
         <div class="input-group" id="TP_tr_from_date_1"> 
          {{{ Form::text('TP_tr_from_date_multicity', null, array('type' => 'text','data-date-format'=>"yyyy-mm-dd", 'class' => 'form-control datepicker','name'=>'TP_tr_from_date_multicity_1','id' => 'TravelFromDate_1','placeholder'=>'* Travel Start Date','title'=>'Pick the travelling start date')) }}} 
         </div> 
        </td> 
       </tr> 

アムクローニングこのTRを変更したいですfind()を使ってどのように行うことができますか?

+0

これは可能ですが、複製された要素に 'id'属性を使用することは、通常は維持するのが非常に大きな苦痛になるので、反パターンです。たとえば、中央の行が削除されると、すべての行に番号を付け直す必要があります。より良い方法は、すべての行で共通のクラスを使用し、DOMを走査して行インデックスによって必要なアクションを実行することです。 –

+0

実際これでソート可能です。したがって、ソート後に場所に変更があった場合、それは失敗する可能性があります。 – Prit

+0

クローニング中に変更することはできませんか?私たちは変わると思う。しかしできないのです。私は試しましたが、うまくいきませんでした。 – Prit

答えて

0

ここでは、クローン化されたtrのIDを取得し、分割は_で取得します。

TR_FromCities_1は、["TR"、 "FromCities"、 "1"]を与える必要があります

配列の最後の要素を取得し、intに変換して1だけインクリメントします。それを文字列に変換して最後の配列インデックスに置き換えます。結合し、クローンのIDを設定してください!クローン化されたTR内のすべてのTD用

 var id = $select.attr('id') || null; 
     if(id) { 
      var spl = beforeID.split("_"); 
      var i=(parseInt(spl[spl.length-1])+1).toString(); 
      spl[spl.length-1]=i; 
      $select.attr('id', spl.join("_")); 
     } 

$select.find('td').each(function(){ 
     var id = $(this).attr('id') || null; 
     if(id) { 
      var spl = beforeID.split("_"); 
      var i=(parseInt(spl[spl.length-1])+1).toString(); 
      spl[spl.length-1]=i; 
      $select.attr('id', spl.join("_")); 
     } 
}); 

+0

はい、あなたは正しいです。しかし、私は1つのIDのために変更したい場合、これは動作します。 しかし、私は複製されたTR全体をトラバースし、それぞれのIDを変更したい – Prit

+0

私は編集しました!あなたの質問に答える希望。 –