当我在选择框上调用.options时,为什么会出现"未定义"?

cou*_*ing 2 html javascript jquery

我正在尝试按照本教程(http://railscasts.com/episodes/88-dynamic-select-menus)来获取使用RoR的动态选择框.无需担心RoR位,这是一个特定于Javascript的问题.

每次运行此函数时,我都会收到"options"未定义的错误.我已经尝试在控制台中手动运行该命令,但无论如何,它都是未定义的.我完全按照我在教程中看到的那样打字,但不知何故它对我不起作用......

这是有问题的javascript:

function clientSelected() {
var client_id = $('#piece_client_id').val();
// THIS IS THE PROBLEM LINE 
var options = $('piece_campaign_id').options;
options.length = 0;
campaigns.each(function(campaign) {
    if (campaign[0] == client_id) {
        options[options.length] = new Option(campaign[1], campaign[2]);
    }
});
if (options.length == 1) {
  $('campaign_field').hide();
} else {
  $('campaign_field').show();
}
}
Run Code Online (Sandbox Code Playgroud)

这是它正在尝试的HTML:

<select id="piece_campaign_id" name="piece[campaign_id]"><option value=""></option> 
<option value="1">Feed The Dogs</option> 
<option value="2">Watch Television</option> 
<option value="3">End The Suffering</option> 
<option value="4">Brian Bilbrey</option> 
<option value="5">SummerHill Homes / Yes on A&amp;B</option>
</select> 
Run Code Online (Sandbox Code Playgroud)

谢谢你们一起来看看吧!让我知道是否还有什么我可以添加来使我的问题更清楚.

Dig*_*ane 12

尝试:

var options = $('#piece_campaign_id').get(0).options;
Run Code Online (Sandbox Code Playgroud)

要么

var options = $('#piece_campaign_id')[0].options;
Run Code Online (Sandbox Code Playgroud)

正如您使用的jQuery对象一样,它没有options属性.另外,请确保包含id选择器(#).

  • `$('#piece_campaign_id')[0] .options`做同样的事情,略短. (3认同)