jquery中选择下拉列表的变量文本标签

Variable text label for select dropdown in jquery

本文关键字:变量 文本标签 下拉列表 选择 jquery      更新时间:2023-09-26

我有一个函数,它采用对象的JSON数组,其中每个对象都有一个id和一个文本字段标签(每个选择的变量),它填充选项。

我试图写的函数是:

function populateSelect(urlString, id, tag){
    $.getJSON(urlString, function(data){
        $.each(data, function(){
            $(id).append($("<option></option>").text(this.tag).val(this.id));
        });
    });
}

因此,this.id将始终为true,因为每个JSON obect都有一个关键字为"id"的属性。然而,this.tag是我想要的变量,因为它可以为我正在构建的每种类型的JSON对象/选择而改变。

例如,我可以使用的两个有效JSON对象是:

[{id:'1', name:'John Doe'}, {id:2, name:'Jane Doe'}]

[{id:1, model:'Toyota'}, {id:2, model:'Honda'}]

这些JSON对象中的每一个都将用于填充相应<select>元素的<option>字段。因此,对于第一个JSON对象,如果这不是一个用于许多不同Select元素的函数,那么这一行将为:

$.(id).append($("<option></option>").text(this.name).val(this.id));

第二个JSON对象将有一行:

$.(id).append($("<option></option>").text(this.model).val(this.id));

抱歉,如果有任何行话不正确,我会加快JQuery的速度。

我想你想要的是:

$.each( data, function( key, value ) {
//get all the properties of the object
    var keys = Object.keys(value);
    var option = document.createElement('option');
    option.value = value.id;
//use the second property as inner html
    option.innerHTML = value[keys[1]];
        $("#mySelect").append(option);
});

http://jsfiddle.net/e55kW/1/我更新了@jmm 的jsFiddle

@Yoeri指出您在$.() 中的拼写错误

这把小提琴是你想要的吗?

我刚刚创建了一个字符串,并将其附加到select元素中。

$.each( data, function( key, value ) {
    var option = "<option value="+value.id +">"+ value.name + "</option>";
    $("#mySelect").append(option);

});

发现(在回来并看到Yoeri的正确响应之前)这是有效的:

function populateSelect(urlString, id, tag){
    $.getJSON(urlString, function(data){
        $.each(data, function(){
            $(id).append($("<option></option>").text(this[tag]).val(this.id));
        });
    });
}

与上面的不同之处在于,我将this.tag更改为this[tag]