2014-12-13 71 views
0

EVERY tbody的第一行是行標題(包含列名稱)。 其餘的每一個成功的第一行都沒有必要,並且想隱藏它們。使用表:只顯示錶tbody的第一行。如何隱藏後續的第一行?

類:

:保存每列名

recordsRow =持有其他記錄細節

現在它這樣表示

toprowHeader =第1行

-------------------------------------------- 
| MessageID | Sender | Message   | 
-------------------------------------------- 
|   1 | admin  |my admin message | 
-------------------------------------------- 
| MessageID | Sender | Message   | 
-------------------------------------------- 
|   2 | sender1 |reply to admin | 

這裏是樣本結構我想實現:

-------------------------------------------- 
| MessageID | Sender | Message   | 
-------------------------------------------- 
|   1 | admin  |my admin message | 
|   2 | sender1 |reply to admin | 

雖然我有一些選擇,使其更容易,但要求說,每一條記錄應該是一個TBODY內

以下是我的樣品表結構:

<table class="gridtable"> 
    <tbody> 
      <tr class="toprowHeader" > 
       <td class="">...</td> 
      </tr> 
      <tr class="recordsRow " > 
       <td class="">...</td> 
      </tr> 
      <tr class="recordsRow " > 
       <td class="">...</td> 
      </tr>    

    </tbody> 
    <tbody> 
      <tr class="toprowHeader"> 
       <td class="">...</td> 
      </tr> 
      <tr class="recordsRow "> 
       <td class="">...</td> 
      </tr> 
      <tr class="recordsRow "> 
       <td class="">...</td> 
      </tr>    
    </tbody>  
</table> 

已添加要求:

很多人質疑上面的表格結構,但是我把它放在單獨的tbody裏面的主要原因是因爲我也有一個按鈕可以將第一個tbody移動到表格的底部/最後。

我使用PHP來顯示的記錄

+1

'$一個標題行(「TR ').not('。toprowHeader')。hide()'會做到這一點。請注意,重複的ID是一個錯誤! – adeneo 2014-12-13 17:29:05

+0

上面的解決方案可行,但你甚至不需要有一個toprowHeader類,你可以使用CSS,即:nth-​​child僞選擇器,如下所示:tr:nth-​​child(n + 1){display:none ) – doldt 2014-12-13 17:30:47

+0

你可以使用CSS,但更重要的是,你可能會做一些奇怪的事情。爲什麼要創建多個TBodys(爲什麼不是一個查詢中的結果)?爲什麼不能限制PHP中的toprowHeader?可能有很多更好的解決方案。 – vol7ron 2014-12-13 17:36:21

回答

1

見下文輸出,使用此

這將隱藏除第一個按照您的要求所有toprowHeaders

   $('tr.toprowHeader:gt(0)').hide(); 
 
       $('table').append($('tbody:eq(0)')); 
 
       console.log($('tbody:eq(0)')); 
 
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table class="gridtable"> 
 
    <tbody> 
 
      <tr class="toprowHeader" > 
 
       <td class="">title 1</td> 
 
      </tr> 
 
      <tr class="recordsRow " > 
 
       <td class="">record1</td> 
 
      </tr> 
 
      <tr class="recordsRow " > 
 
       <td class="">record1</td> 
 
      </tr>    
 

 
    </tbody> 
 
    <tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title2</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record2</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record2</td> 
 
      </tr>    
 
    </tbody> 
 
    <tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title3</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record3</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record3</td> 
 
      </tr>    
 
    </tbody> 
 
    <tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title4</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record4</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record4</td> 
 
      </tr>    
 
    </tbody> 
 
    <tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title5</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record5</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record5</td> 
 
      </tr>    
 
    </tbody> 
 
    <tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title6</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record6</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record6</td> 
 
      </tr>    
 
    </tbody>  
 
<tbody> 
 
      <tr class="toprowHeader"> 
 
       <td class="">title7</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record7</td> 
 
      </tr> 
 
      <tr class="recordsRow "> 
 
       <td class="">record7</td> 
 
      </tr>    
 
    </tbody> 
 
</table>

+0

似乎你是對的。如果你不介意,我想知道如何將第一個tbody移動到表jquery的底部。這是我想解釋爲什麼我需要創建另一個tbody而不是一次。我嘗試了.appendTo(),但它將第一個tbody複製到底部。我需要移動它。結果將是:第一個tbody被移動併成爲最後一個。順便說一句,我用一個按鈕來執行tbody的移動.. thnx希望你能幫助.. – Raf 2014-12-14 13:32:27

+0

@Raf你想要這個嗎?檢查代碼檢查元素?編輯我的代碼 – 2014-12-14 13:44:23

+0

謝謝先生。我做了很多搜索,但你的答案更接近我所期待的。 – Raf 2014-12-14 15:15:20

1

您可以使用CSS,如下所示:

tbody:not(:first-child) .toprowHeader{ 
 
    display: none; 
 
}
<table class="gridtable"> 
 
    <tbody> 
 
    <tr class="toprowHeader"> 
 
     <td>Title</td> 
 
    </tr> 
 
    <tr class="recordsRow "> 
 
     <td>Record</td> 
 
    </tr> 
 
    <tr class="recordsRow "> 
 
     <td>Record</td> 
 
    </tr> 
 
    </tbody> 
 
    <tbody> 
 
    <tr class="toprowHeader"> 
 
     <td>Title</td> 
 
    </tr> 
 
    <tr class="recordsRow "> 
 
     <td>Record</td> 
 
    </tr> 
 
    <tr class="recordsRow "> 
 
     <td>Record</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

順便說一句,你確實應該嘗試修改腳本,以省去額外的標題,而不是(兩者產生的話),並有內部<thead>

+2

使用':first-而不是':first-child'會更安全一些,因爲在一般情況下,第一個'tbody'元素不需要是'table'元素的第一個子元素。在它之前可以有'caption'元素,'col'和'colgroup'元素,'thead'和'tfoot'。 – 2014-12-13 18:38:57

+0

作爲第一個孩子支持的第一種類型?同樣,支持IE舊版本的需求將決定需求 – vol7ron 2014-12-13 20:42:46