我有一个使用observable值创建的select输入。我订阅了observable,但似乎无法获得选择输入的ID。
<select data-bind="options: firstName, optionsText: 'name', value: $parents[0].selectCategory, attr: {'id': lastName}">
</select>
self.selectedCategory.subscribe(function(category) {
console.log(this);
console.log(this.target());
}, this);
我不能为我的生活获取select元素的ID。我可以获得选项的值(这里没有设置),以及selectedCategory
所属的功能,但无法获取ID。我非常确定我可以通过jquery.click轻松完成此操作,但我想知道我是否可以通过.subscribe()来完成。
有任何想法或意见吗?
答案 0 :(得分:1)
我不太确定你的id究竟是什么意思。你的绑定有点搞砸了。如果您指的是每个所选输入的ID,那么您可以在绑定中使用optionsValue
:
<select data-bind="options: names, optionsText: 'name', optionsValue: 'id', value: selectedName, attr: {'id': lastName}">
</select>
self.names = [
{ name: 'Name 1', id: 1},
{ name: 'Name 2', id: 2},
{ name: 'Name 3', id: 3}
];
我离开了您添加的attr
定义,即使它在技术上没有任何意义,只是为了让您可以详细说明您可能需要它的原因。
如果您有兴趣在更改后获取每个所选元素的id
,那么您可以这样做:
self.selectedName.subscribe(function(name) {
console.log(name);
}, this);
当然,您可以通过这种方式单击[在另一个功能中]按钮来获取它:
self.alertName = function(){
alert(self.selectedName());
};
<强> Full Demo 强>
我希望这会有所帮助,如果这是您最初的意思,请告诉我们。