61

Java sevlet にマップがあり、正しく機能する json 形式に変換しています。

以下でこの関数を実行すると、ドロップダウンが作成されますが、すべての文字がオプションとして配置されますか?? これは私が得たものです:

$(document).ready(function(){
    var temp= '${temp}';
    //alert(options);
    var $select = $('#down');                        
    $select.find('option').remove();                          
    $.each(temp, function(key, value) {              
        $('<option>').val(key).text(value).appendTo($select);     
    });
});

JSON 形式のマップ コンテンツ

{"1" : "string","2" : "string"}
4

8 に答える 8

50

DOM を一度だけ変更する...

var listitems = '';
$.each(temp, function(key, value){
    listitems += '<option value=' + key + '>' + value + '</option>';
});
$select.append(listitems);
于 2014-10-22T18:17:04.970 に答える
11

フィドル

var $select = $('#down'); 
$select.find('option').remove();  
$.each(temp,function(key, value) 
{
    $select.append('<option value=' + key + '>' + value + '</option>');
});
于 2013-05-08T13:57:52.180 に答える
7

解決策は、json マップを取得してそれを選択に取り込む独自の jquery プラグインを作成することです。

(function($) {     
     $.fn.fillValues = function(options) {
         var settings = $.extend({
             datas : null, 
             complete : null,
         }, options);

         this.each( function(){
            var datas = settings.datas;
            if(datas !=null) {
                $(this).empty();
                for(var key in datas){
                    $(this).append('<option value="'+key+'"+>'+datas[key]+'</option>');
                }
            }
            if($.isFunction(settings.complete)){
                settings.complete.call(this);
            }
        });

    }

}(jQuery));

これを行うことで呼び出すことができます:

$("#select").fillValues({datas:your_map,});

利点は、どこでも呼び出したのと同じ問題に直面することです。

 $("....").fillValues({datas:your_map,});

出来上がり!

プラグインに好きなように関数を追加できます

于 2015-07-29T12:13:01.757 に答える
3
$(JSON.parse(response)).map(function () {
    return $('<option>').val(this.value).text(this.label);
}).appendTo('#selectorId');
于 2017-01-10T14:26:30.093 に答える
2

これを行うには、Chrome の JavaScript コンソールを使用しました。あなたのもののいくつかをプレースホルダーに置き換えました。

var temp= ['one', 'two', 'three']; //'${temp}';
//alert(options);
var $select = $('<select>'); //$('#down');                        
$select.find('option').remove();                          
$.each(temp, function(key, value) {              
    $('<option>').val(key).text(value).appendTo($select);
});
console.log($select.html());

出力:

<option value="0">1</option><option value="1">2</option><option value="2">3</option>

ただし、json はおそらく実際には文字列であるように見えます。したがって、JSON を文字列ではなく実際の JSON にします。

var temp= "['one', 'two', 'three']"; //'${temp}';
//alert(options);
var $select = $('<select>'); //$('#down');                        
$select.find('option').remove();                          
$.each(temp, function(key, value) {              
    $('<option>').val(key).text(value).appendTo($select);
});
console.log($select.html());
于 2013-05-08T13:58:52.060 に答える
-1

私はこれがあなたを助けることができると信じています:

$(document).ready(function(){
    var temp = {someKey:"temp value", otherKey:"other value", fooKey:"some value"};
    for (var key in temp) {
        alert('<option value=' + key + '>' + temp[key] + '</option>');
    }
});
于 2013-05-08T14:06:55.733 に答える