2013-02-01 36 views
0

我正在使用Knockout JS。而在下拉菜單的訂閱功能中。我需要獲取所選下拉列表的索引。Knockout Js:獲取表格行下拉訂閱的索引值

這裏爲下拉是表格內(即的foreach TR)

HTML:

<table> 
    <tbody data-bind="foreach: Rows"> 
     <tr> 
     <td> 
      <select data-bind="options: Materials, value: selectedMaterial,attr:{index:$(index)}"></select> 
     </td> 
     </tr> 
</table> 

腳本:

this.selectedMaterial.subscribe(function(data){ 
     // I need to get the index value of the selectedMaterial 

     // i try to get like following code but its not working 
      var k =$(this).attr("index"); 
    }); 
+0

你想在索引後做什麼?你爲什麼不從材質集合'Materials.indexOf(data)'獲取索引? – nemesv

回答

2

這是不可能的KO做,在訂閱功能。你應該嘗試另一種方式來處理更改事件。

<select data-bind="event: {change: selectChanged}"... /> 

yourViewModel.selectChanged = function(data, event){ 
    var k = $(event.target).attr("index"); 
}); 
+0

它的工作很好,謝謝你:) – logarajaks

+0

'var k = event.target.selectedIndex'爲我工作。 –

0

您可以使用數據綁定設置元素的ID,然後使用jQuery來獲取值了:

 <select data-bind="options: Materials, value: selectedMaterial,attr:{index:$(index), id: 'dropdown' + $index }"></select> 

$('#dropDown' + theIndexOfTheTable).prop('selectedIndex'); 

這並假定你就會知道表的索引你正在處理。

+0

在這裏,「theIndexOfTheTable」是我需要找到的值 – logarajaks

+0

啊,對,我認爲你可能知道表的索引,但不是下拉菜單。 –