将多个元素放入选择选项

时间:2015-11-10 21:00:39

标签: jquery options

我有一个创建下拉选项并过滤掉重复项的函数(它还使用类名根据在另一个下拉列表中选择的状态进行额外过滤)。但是,选项只包含文本和类,我也在努力包含值,这些值必须与文本相同,但引号和撇号都用.replace(/“|'| / g,'''删除)。感谢您的帮助。

var stateValues = [];
var viewValues = [];
var stateView = {};
$("div.info").each(function(index, elem) {
    stateValues.push($(this).attr("data-state"));
    viewValues.push($(this).attr("data-view"));
    stateView[$(this).attr("data-view")] = $(this).attr(
        "data-state");
});
var viewUnique = [];
$(viewValues).each(function(index, item) {
    if ($.inArray(item, viewUnique) == -1) viewUnique.push(item);
});
$(viewUnique).each(function(index, item) {
    $("#view").append($("<option class='" + stateView[item] +
        "'>").html(item));
});

2 个答案:

答案 0 :(得分:1)

你的问题基本上已经有了答案。在最后一段代码中:

$(viewUnique).each(function(index, item) {
    $("#view").append($("<option class='" + stateView[item] + "'>").html(item));
});

您已经在创建一个带有类名和项文本的元素。你甚至知道正则表达式取出报价!您只需要使用classvalue进行类似的操作:

$(viewUnique).each(function(index, item) {
    $("#view").append($("<option class='" + stateView[item] + "' value='" + item.replace(/"|'|/g,'') + "'>").html(item));
});

答案 1 :(得分:0)

最简单和最好的方法是使用jQuery本机函数来添加类..因为它永远不会错误地添加它。

$("#view").append($("<option></option>").addClass("stateView[item]").text(item));

它将确保您不必对任何内容进行编码,jQuery会为您处理。

您还可以通过$("<option></option>").attr("value", item).addClass("stateView[item]"))

等操作添加属性和任何内容