Jquery显示一个值,即使相同的Id';在json中存在

Jquery显示一个值,即使相同的Id';在json中存在,jquery,json,Jquery,Json,从下拉列表中选择JSON对象时,与该对象相关的值应显示在文本框或div中。我能够做到这一点。。我看到的是 a) 显示下拉列表时,我希望亚洲只显示一次,因为它们的Id相同。但在我的小提琴中,它被显示了两次 b) 我想显示两个下拉列表。。例如:当选择亚洲时,在第二个下拉列表中,必须显示与亚洲相关的站点,如新加坡和吉隆坡 c) 当显示“亚洲”时,我希望在文本框中显示新加坡和吉隆坡的总数,但当选择“亚洲”下的“新加坡”时,我只希望在文本框中显示新加坡的游客,反之亦然,吉隆坡亦然 我把我的小提琴连到第一个

从下拉列表中选择JSON对象时,与该对象相关的值应显示在文本框或div中。我能够做到这一点。。我看到的是

a) 显示下拉列表时,我希望亚洲只显示一次,因为它们的Id相同。但在我的小提琴中,它被显示了两次

b) 我想显示两个下拉列表。。例如:当选择亚洲时,在第二个下拉列表中,必须显示与亚洲相关的站点,如新加坡和吉隆坡

c) 当显示“亚洲”时,我希望在文本框中显示新加坡和吉隆坡的总数,但当选择“亚洲”下的“新加坡”时,我只希望在文本框中显示新加坡的游客,反之亦然,吉隆坡亦然

我把我的小提琴连到第一个下拉菜单上


这里是JSFiddle
JSFiddle.net/binoymat/hjsehukf/
,我想这就是你想要的

var items = '[{"chains": "Asia","visitors": 10,"id": 1,"site":"Singapore"},{"chains": "Asia","visitors": 20,"id": 1, "site":"kuala lumpur"},{"chains": "North America","visitors": 30,"id": 2,"site":"Texas"}]';

var checkCountry = [];
$.each(JSON.parse(items), function (k, v) {
    if($.inArray(v.id,checkCountry)  == -1){
    $("#category").append('<option value="' + v.id + '" data-price="' + v.visitors + '">' + v.chains + '</option>');
       checkCountry.push(v.id);
    }
});



$("#category").on('change',function () {
    var dept_number = parseInt($(this).val());
    var price = $(this).find(':selected').data('price');
    var tochange = false;
    var total = 0;
    $.each(JSON.parse(items), function (k, v) {
        if(v.id == dept_number){
            if(tochange == true){
            $("#category1").append('<option value="' + v.id + '" data-price="' + v.visitors + '">' + v.site + '</option>');
            }else{
               $("#category1").html('<option value="' + v.id + '" data-price="' + v.visitors + '">' + v.site + '</option>');
                tochange = true;
            }
            total += v.visitors;
        }
    });
    $('#dept-input').val(dept_number);
    $('#price-input').val(total);
}).change();   //<<<<<<<<<<<<< onload :)

$("#category1").on('change',function () {
    var dept_number = parseInt($(this).val());
    var price = $(this).find(':selected').data('price');
    $('#dept-input').val(dept_number);
    $('#price-input').val(price);
});
var items='[{“链”:“亚洲”,“访客”:10,“id”:1,“站点”:“新加坡”},{“链”:“亚洲”,“访客”:20,“id”:1,“站点”:“吉隆坡”},{“链”:“北美”,“访客”:30,“id”:2,“站点”:“德克萨斯”};
var checkCountry=[];
$.each(JSON.parse(items),函数(k,v){
如果($.inArray(v.id,checkCountry)=-1){
$(“#类别”)。追加(“”+v.chains+“”);
检查国家/地区推送(v.id);
}
});
$(“#类别”)。关于('change',function(){
var dept_number=parseInt($(this.val());
var price=$(this).find(':selected').data('price');
var-tochange=false;
var合计=0;
$.each(JSON.parse(items),函数(k,v){
如果(v.id==部门编号){
if(tochange==true){
$(“#类别1”)。追加(“”+v.site+“”);
}否则{
$(“#类别1”).html(“”+v.site+“”);
改变=正确;
}
总数+=v.访客;
}
});
$('部门输入').val(部门编号);
$('价格输入').val(总计);

}).change()//我认为首先必须循环遍历items对象,以消除重复的id。这将解决“a”。对于其余部分,您具体遇到了什么问题?我需要一个jquery函数从json调用“sites”值,并在下拉列表中显示它们。现在,例如:-如果选择了亚洲,则第二个下拉列表应显示新加坡和Kaula Lumpur,如果选择了北美,则第二个下拉列表应仅显示德克萨斯州。这是bI的要点,看你有一些代码。代码的哪一部分有问题?代码没有问题。我正在寻找答案,以编辑现有的代码。我的意思是,对于第二个下拉列表,我如何编写jquery函数来将“站点”显示在第二个下拉列表中???@BinoyMathew 1st您总是欢迎的。。第二:检查我的注释,以检查带有v.id、站点等的值。。第三:祝你好运:)我们有没有办法在加载页面时显示值??现在,当它加载时,显示的是亚洲,但没有显示值,所以在加载页面时我们可以显示它的值吗???@BinoyMathew非常简单。。只要使用.change()。。更新答案。。。和演示:)。。但是将所有代码包装在$(document).ready(function(){//your code here})中看起来不错@祝你今天愉快:)@BinoyMathew我回答:)