从数据数组中设置选项 类

Set option classes from array of data

我有两个下拉菜单(州和县)控制包含城市信息的 div 的显示。县菜单为所有城市 div 生成选项,但在文档就绪时会过滤掉重复的选项。这方面工作正常,如此处的 jsfiddle 所示:

https://jsfiddle.net/ph68fxya/

不完全有效的是隐藏在选择特定州时不相关的县选项。我有一个我在后面包含的函数,但在我弄清楚如何在县菜单选项中设置 类 with stateValues 之前它不会起作用。我知道我必须循环,但我不知道该怎么做。任何帮助将非常感激。谢谢

$(document).ready(function () {
var stateValues = [];
var countyValues = [];
$("div.city").each(function (index, elem) {
    stateValues.push($(this).data("state"));
    countyValues.push($(this).data("county"));
});
var uniqueValues = [];
$(countyValues).each(function (index, item) {
    if ($.inArray(item, uniqueValues) == -1) uniqueValues.push(item);
});
$(uniqueValues).each(function (index, item) {
    $("#county").append($("<option class='"+stateValues+"'>").html(item));
});
});

这是附加功能,一旦定义了选项 类,它应该可以工作:

$.conditionalize = function(state,county){
var counties = view.children().clone();    
state.change(function(){
    var chooseState = $(this).val();                  
    view.children.not((".chooseState")).remove();
    counties.clone().filter("."+counties).appendTo(county);
}).trigger("change");
}
$.conditionalize($("#state"),$("#county"));

我会做这样的事情来设置 类。使用对象跟踪哪个县属于哪个州。然后,当您为县 select 字段创建选项时,使用该对象查找该选项属于哪个州。

Fiddle: https://jsfiddle.net/ph68fxya/1/

$(document).ready(function () {
    var stateValues = [];
    var countyValues = [];
    // Initialize object
    var countyState = {};
    $("div.city").each(function (index, elem) {
        stateValues.push($(this).data("state"));
        countyValues.push($(this).data("county"));
        // For each county add its state to object
        countyState[$(this).data("county")] = $(this).data("state");
    });
    var uniqueValues = [];
    $(countyValues).each(function (index, item) {
        if ($.inArray(item, uniqueValues) == -1) uniqueValues.push(item);
    });
    $(uniqueValues).each(function (index, item) {
        // As you create county option find its state in object
        $("#county").append($("<option class='" + countyState[item] + "'>").html(item));
    });
});

试试这个。这将根据州过滤您所在的县。

$(document).ready(function () {
        var stateValues = [];
        var countyValues = [];
        var countyState = {};
        $("div.city").each(function (index, elem) {
            stateValues.push($(this).data("state"));
            countyValues.push($(this).data("county"));
            countyState[$(this).data("county")] = $(this).data("state");
        });
        var uniqueValues = [];
        $(countyValues).each(function (index, item) {
            if ($.inArray(item, uniqueValues) == -1) uniqueValues.push(item);
        });
        $(uniqueValues).each(function (index, item) {
            $("#county").append($("<option class='" + countyState[item] + "'>").html(item));
        });

        $("#state").change(function()
        {
            var val = $(this).val();
            $("#county option").each(function()
            {
               if($(this).attr("class") != val)
                   $(this).hide();
                else
                    $(this).show();
            });            
        });


    });

https://jsfiddle.net/ph68fxya/2/