使用jquery动态地向div添加单选按钮

时间:2013-07-26 19:55:20

标签: jquery dom dynamically-generated

我对此感到筋疲力尽(可能是由于星期五),我试过,谷歌搜索,但没有办法让这件事发挥作用。代码看起来很直接,但它不会将单选按钮添加到我的div。我确信,我错过了一些愚蠢的事情。

var m_fastingOptions = [{ "Id": "1", "Name": "Fasting" }, { "Id": "2", "Name": "Not Fasting" }];

$.each(m_fastingOptions, function() {
    $("#dvFastingOptions").append(
        $('<label />', {
            'text': this.FastingName                            
        }).append(
            $('<input />', { 
                type: 'radio', 
                name: 'rdoFastingOptions', 
                id: 'rdoFastingOptions' + this.Id,
                value: this.Id
            } )
        )
    );    
});

这是我正在玩的jsFiddle。非常感谢任何帮助。

将正确的jQuery版本添加到jsFiddle后,我看到了单选按钮,但没有看到标签文本。

我需要看到: O禁食O禁食

2 个答案:

答案 0 :(得分:3)

问题是,你指的是错误的属性名称。

而不是Name,您尝试导航到FastingName

$('<label />', {
    'text': this.Name //This is correct
})

要么是这样,要么将对象更新为:

var m_fastingOptions = [{
    "Id": "1",
    "FastingName": "Fasting"
}, {
    "Id": "2",
    "FastingName": "Not Fasting"
}];

请参阅此处的小提琴:http://jsfiddle.net/pratik136/XWHsA/

修改

将输出视为

O Fasting O Not Fasting

使用.prepend()代替.append()

答案 1 :(得分:1)

最后我找到了问题的解决方案, 这是答案代码,

var listOfOptions = [{ "Id": "forYourself", "Name": "For Yourself" }, { "Id": "myEmployees", "Name": "My Employees" }, { "Id": "forOthers", "Name": "For Others" }];
        $.each(listOfOptions, function() {
            $(".optionDiv").append(
                $('<input />', {
                    type: 'radio',
                    name: 'rdoOptions',
                    id: 'rdoOptions' + this.Id
                })
            );
            $(".optionDiv").append(
                        $('<label />', {
                            'text': this.Name
                        })
            )

        });
    });

有更好的简化方法吗?