由DOM行为困惑动态加载select = undefined

时间:2012-02-24 17:53:40

标签: javascript html select options

以下代码适用于动态加载选择下拉列表。在文档就绪函数中调用代码以将数据预加载到页面中。代码工作得很好。但是,我对DOM中似乎“未定义”的事实感到困惑。 ie ...change事件等...当我试图选择一个值....

在HTML中,设置简单:

<select id="optionsChaa" name="chaa_id" class="largewidth"></select>

jquery代码如下。有用。随意在您的代码中使用它

var optionsValues = '<select id="optionsChaa" name="chaa_id" class="largewidth">';
                optionsValues += '<option value=""></option>';
                $.each(result, function() {
                    optionsValues += '<option value="' + this.chaa_id.val + '">' + this.chaa_name + '</option>';
                });
                optionsValues += '</select>';

                var options = $('#optionsChaa');
                options.replaceWith(optionsValues);

                $('#optionsChaa').change(function() {

                   // Alert returns undefined...

                    alert($(this).val() );

                });

那么为什么DOM之后会“未定义”?

2 个答案:

答案 0 :(得分:1)

我认为this.chaa_id.val部分出了问题。在each中,“this”指的是“current”元素(即results数组的成员)。

答案 1 :(得分:1)

你能展示result变量中的内容吗?

我尝试将您的代码设置为result

var result = [
    { 'chaa_id' : { 'val' : 1 }, 'chaa_name' : 'name1'},
    { 'chaa_id' : { 'val' : 2 }, 'chaa_name' : 'name2'}
]

alert()似乎有效。