2015-04-01 20 views
0

我有一個淘汰賽格,看起來像這樣(沒有什麼特別):jQuery的:確定從哪個<tr>函數被調用

knockoutjs grid editable

當我點擊編輯,就必須確定在哪個<tr>它被稱爲。例如,我點擊編輯第一個用戶,它必須登錄控制檯「1」,依此類推。

我的表的代碼:

<table class="table table-striped table-bordered table-condensed" data-bind='visible: users().length > 0'> 
    <thead> 
     <tr> 
      <th>UserId</th> 
      <th>Username</th> 
      <th>FirstName</th> 
      <th>LastName</th> 
      <th>Email</th> 
      <th>Date</th> 
      <th /> 
     </tr> 
    </thead> 
    <tbody data-bind='foreach: users'> 
     <tr> 
      <td> 
       <label data-bind="text: UserId" /> 
      </td> 
      <td> 
       <input data-bind='value: Username' /> 
       <label data-bind="text: Username" /> 
      </td> 
      <td> 
       <input data-bind='value: FirstName' /> 
       <label data-bind="text: FirstName" /> 
      </td> 
      <td> 
       <input data-bind='value: LastName' /> 
       <label data-bind="text: LastName" /> 
      </td> 
      <td> 
       <input data-bind='value: Email' /> 
       <label data-bind="text: Email" /> 
      </td> 
      <td> 
       <input data-bind='value: Date' /> 
       <label data-bind="text: Date" /> 
      </td> 
      <td class="tools"> 
       <a class="Apply" href="#" data-bind="click: $root.applyUser">Apply</a> 
       <a class="Edit" href="#" data-bind="click: $root.editUser">Edit</a> 
       <a class="Update" href="#" data-bind='click: $root.updateUser'>Update</a> 
       <a class="Delete" href='#' data-bind='click: $root.removeUser'>Delete</a> 
      </td> 
     </tr> 
    </tbody> 
</table> 

這是我的嘗試:

$('a.Edit').click(function() { 
        var rowIndex = $(this).parent() 
              .parent() 
              .children() 
              .index($(this).parent()); 
        console.log('Row: ' + rowIndex); 
       }); 

我缺少什麼?

+0

你生成的標記中是否有多個tbody? – Jai 2015-04-01 07:26:15

+0

@Jai no,我不 – 2015-04-01 07:27:36

回答

2

您可以使用.closest()來遍歷最接近的父親。

若Tr元​​件沒有彼此的兄弟姐妹:該對象方法.index()上TR收集通:

$('tr').index($(this).closest('tr')); 

若Tr元​​件是彼此的兄弟姐妹:

$(this).closest("tr").index() 
+0

或者只是'$(this).closest(「tr」)。index()' – Andreas 2015-04-01 07:23:50

+0

,如果tr元素不是直接兄弟,更新。 – 2015-04-01 07:24:32

+0

作品,謝謝你親愛的先生 – 2015-04-01 07:27:45

1

我會這樣做如下 -

通過給類父TR-

<tr class="parent">

而則 -

$(this).closest('tr.parent').index()

因爲如果情況是嵌套tr(s)然後parent()不會」被工作更長的時間。

相關問題