jquery从选择框中获取列表中所有项的索引

时间:2012-10-02 17:30:20

标签: javascript jquery

我有一个选择框,如:

<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"}]

我想要做的是从select中获取与我的json中的值匹配的索引,并且我还想从我的select中获取不在我的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中的人,然后对那些不属于json的人做$('#meh_chzn_c_'+$(this).index()+').remove();

2 个答案:

答案 0 :(得分: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>的值是否在我的数组中。

答案 1 :(得分:-2)

看起来你的json搞砸了..

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

所有键值对都应该在“”Double Quotes 中。 键值对由冒号

分隔

所以你的json应该是这样的

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

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

Check DEMO