jquery选择使用knockout创建的选项

时间:2016-09-21 18:03:50

标签: javascript jquery knockout.js

我正在尝试选择我认为是使用knockoutjs创建的选项(但我不确定)

<select class="styled" data-bind="options: Locations, optionsText: 'Name', value: DesiredLocat…ion: SelectLocationText(), event: { change: UpdateLocation }">

<option value="">

    Select location

</option>
<option value="">

    Some location

</option>
<option value="">

    Some location2

</option>

</select>

整个东西被捆绑在一个框架中,我已经用Google搜索了如何使jquery在框架中工作,现在我正在使用它像这样

var frameDocument= $("frame[name='mainFrame']", top.document)[0].contentDocument;
我尝试这样做:

$(frameDocument).find('.styled').val('Some location').change();

并且像这样:

$(frameDocument).find('.styled').children().each(function(){
     if ($(this).text()=='Some location'){
        $(this).click();
         return false;
      }
}) 

有谁可以帮助我如何选择我需要的选项?

1 个答案:

答案 0 :(得分:2)

最好不使用jquery,因为您使用的是knokout.js

示例:https://jsfiddle.net/kyr6w2x3/82/

HTML:

<select class="styled" data-bind="options: Locations, optionsText: 'Name', optionsValue: 'Id',value: selectedLocation">

JS:

function MainViewModel() {
  var self = this ;
  self.Locations = ko.observableArray([{Name:"Location 1" , Id : 1 },{Name:"Location 2" , Id : 2 },{Name:"Location 3" , Id : 3 }]);
  self.selectedLocation = ko.observable();
  self.selectedLocation.subscribe(function(newValue){
    console.log(newValue);
  })
}

ko.applyBindings(new MainViewModel());