将多个元素放入 Select 选项
Put Multiple Elements Into Select Options
我有一个函数可以创建下拉选项并过滤掉重复项(它还使用 class 名称根据在另一个下拉列表中选择的状态进行额外过滤)。但是,选项只有文本和 classes,我正在努力包括值,这些值需要与文本相同,但引号和撇号用 .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));
});
你的问题基本上已经有了答案。在您的最后一段代码中:
$(viewUnique).each(function(index, item) {
$("#view").append($("<option class='" + stateView[item] + "'>").html(item));
});
您已经在创建具有 class 名称和项目文本的元素。你甚至知道用正则表达式去掉引号!您只需要对 class
做与 value
:
类似的事情
$(viewUnique).each(function(index, item) {
$("#view").append($("<option class='" + stateView[item] + "' value='" + item.replace(/"|'|/g,'') + "'>").html(item));
});
最简单和最好的方法是使用 jQuery 添加 class 的本机函数,因为它永远不会添加错误。
$("#view").append($("<option></option>").addClass("stateView[item]").text(item));
它将确保您无需对任何内容进行编码,jQuery 会为您处理。
您还可以通过 $("<option></option>").attr("value", item).addClass("stateView[item]"))
之类的操作来添加属性和任何您想要的内容
我有一个函数可以创建下拉选项并过滤掉重复项(它还使用 class 名称根据在另一个下拉列表中选择的状态进行额外过滤)。但是,选项只有文本和 classes,我正在努力包括值,这些值需要与文本相同,但引号和撇号用 .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));
});
你的问题基本上已经有了答案。在您的最后一段代码中:
$(viewUnique).each(function(index, item) {
$("#view").append($("<option class='" + stateView[item] + "'>").html(item));
});
您已经在创建具有 class 名称和项目文本的元素。你甚至知道用正则表达式去掉引号!您只需要对 class
做与 value
:
$(viewUnique).each(function(index, item) {
$("#view").append($("<option class='" + stateView[item] + "' value='" + item.replace(/"|'|/g,'') + "'>").html(item));
});
最简单和最好的方法是使用 jQuery 添加 class 的本机函数,因为它永远不会添加错误。
$("#view").append($("<option></option>").addClass("stateView[item]").text(item));
它将确保您无需对任何内容进行编码,jQuery 会为您处理。
您还可以通过 $("<option></option>").attr("value", item).addClass("stateView[item]"))