-1

我有一个选择框,例如:

<select name="blah" id="meh">
<option value="1">Car</option>
<option value="2">Horse</option>
<option value="3">Van</option>
</select>

然后我有一些Json,例如:

[Object { id="1",  label="Car",  value="1"}, Object { id="3",  label="Van",  value="3"}]

我想要做的是从选择中获取与我的json中的值匹配的索引,并且我想从我的选择中获取不在我的json中的索引。所以我写了这段代码:

$.map( data, function( item ) {
        $('#meh option').filter(function() {
            if($(this).text() == item.label){
                $('ul.chzn-results').append('<li id="meh_chzn_o_'+$(this).index()+'" class="active-result">' + item.label + '</li>');
                }
        });
});

现在这让我得到了我的 json 中的索引;但是,我正在努力获取那些不在 json 中的内容,然后$('#meh_chzn_c_'+$(this).index()+').remove();对那些不属于 json 的内容进行处理。

4

2 回答 2

0

所以我想出了以下代码来解决这个问题:

$.getJSON(surl+'contacts/_ajax/ajax_listTribes.cfm?bIsAjax=true&lstTribeIDs='+lsttribeids, function(data) {
    var arrids = $.map(data,function(obj){ return obj.id });
    $('#lstTribeIDs option').each(function(){
        if( $.inArray($(this).val() , arrids) != -1 ) {
            //do stuff
        } else {
            //do other stuff
        }
    });
});

因此,获取 JSON 对象,获取其中的 'id' 部分并转换为数组,然后循环我<select>并检查当前的值是否<option>在我的数组中。

于 2012-10-05T08:16:52.143 回答
-2

看起来你的json搞砸了..

{ id="1",  label="Car",  value="1"}

所有键值对都应该在"" 双引号中。以及用冒号分隔的键值对:

所以你的 json 应该是这样的

[
  { "id" : "1",  "label" : "Car",  "value" :"1"},
  { "id" : "3",  "label" : "Van" ,  "value" : "3"}
]

修复 json 对象后,这是输出。

检查演示

于 2012-10-02T17:37:15.083 回答