Knockout Js:获取下拉订阅的表行索引值

时间:2013-02-01 09:05:22

标签: jquery 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"); 
    });

2 个答案:

答案 0 :(得分:2)

KO在订阅功能中不可能这样做。您应该尝试其他方式,例如处理更改事件。

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

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

答案 1 :(得分:0)

你可以使用data-bind来设置元素的id,然后使用jQuery来获取值:

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

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

这确实假设您将知道正在处理的表的索引。