来自动态生成的select的值是'undefined'

时间:2013-11-07 11:14:46

标签: javascript jquery dom

我有一个动态生成新行的表,我需要从动态生成的selectbox中获取值。但我得到的只是'undefined'。如果我尝试从动态<input>获取值,那么一切正常。问题只在于选择框。

这是我的代码,用于从用户

获取值
$("#myTable tr").each(function(index, element){
        if(index === 0){            // skip the table head
            return true;
        }
        var option = $(element).find("#course option:selected");
        if(option.val() == "-1"){        // should skip empty row but doesn't work either
            return true;
        }
        $(element).children().each(function(index, element){
            if(index === 0){
                activities[activities.length] = $(element).find("input").val();
            }else if(index === 1){
                activityIds[activityIds.length] = option.val();
                activityType[activityType.length] = option.attr("type");
            }
        });
    });

JSFiddle http://jsfiddle.net/8rrmr/

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

尝试这样的事情,FIDDLE

更改

 // can't find #course
 var option = $(element).find("#course option:selected");

 var option = $(element).find("select option:selected");

答案 1 :(得分:1)

试试这个,

activityIds[activityIds.length] = $(element).find('select').val();
activityType[activityType.length] =  $(element).find('input').attr("type");

答案 2 :(得分:1)

在你的addNewActivityRow函数中,你没有给你的选择框提供#course id。实际上,在这种情况下你不应该使用id,但是因为id对于页面必须是唯一的类。更改以下行:

var option = $(element).find("#course option:selected");

为:

var option = $(element).find("select option:selected");

它会起作用,但是如果要有多个实例,最好从元素中删除所有ID