2016-11-11 42 views
4

我有一個表,它使用jQuery可排序來拖放和排序表中的元素。jQuery向上遍歷並找到

將元素放入「可排序行」時,我想從前面的「行 - 行」中讀取數據ID。

我已經設法實現這一點,當行被放置在「部分 - 行」正下方的行中,或者下面的2層時。

第一級下調:

($(ui.item[0]).closest('tr').prev('.stop-row').data('id'); 

第二級下來:

$(ui.item[0].previousElementSibling).closest('tr').prev('tr.stop-row').data('id'); 

的問題是「部分」可以添加到它的任何行的量,所以我需要某種循環將檢查前一個元素是否爲「區段行」,如果不是,請檢查以下的前一個元素。

我如何用jQuery實現這一點?

我的表:

<table class="table table-bordered table-responsive"> 
    <thead> 
     <tr> 
      <td>Assignment</td> 
     </tr> 
     <tr> 
      <td>Type</td> 
     </tr> 
     <tr> 
      <td>Time</td> 
     </tr> 
     <tr> 
      <td>Level</td> 
     </tr> 
    </thead> 

    <tbody class="sortable"> 
     <tr class="section-row" data-id="{{ id }}"> 
      <td> Section-{{ id }}</td> 
     </tr> 
     <tr class="sortable_row"> 
      <td>{{ assignment }}</td> 
      <td>{{ type }}</td> 
      <td>{{ time }}</td> 
      <td>{{ level }}</td> 
     </tr> 
    </tbody> 
</table> 

回答

6

你可以這樣做: $(ui.item[0]).closest('tr').prevAll('.section-row:first').data('id');

它會去到最近tr,搜索所有前述tr,並在第一個與類.section-row停止。

+0

偉大的這正是我所需要的。我忘了補充說,表格示例中有多個部分,哪些行可以在其間放置。這解決了我的問題。 – Mezz

+0

@DennisM Stack的標記問題的方法在下面的帖子中有介紹http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work - 回到答案並做一樣。否則,其他人可能會認爲這個問題仍然是未解決的問題,可能會試圖發佈更多的答案。 –