【问题标题】:Put Multiple Elements Into Select Options将多个元素放入选择选项中
【发布时间】:2015-11-10 21:00:39
【问题描述】:

我有一个函数可以创建下拉选项并过滤掉重复项(它还使用类名根据在另一个下拉列表中选择的状态进行额外的过滤)。但是,选项只有文本和类,我正在努力包含值,这些值需要与文本相同,但使用 .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));
});

【问题讨论】:

  • 这个问题在哪里?

标签: jquery options


【解决方案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));
});

【讨论】:

  • 谢谢,乔纳森。这正是我所需要的。
【解决方案2】:

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

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

它将确保您不必编码任何东西,jQuery 会为您处理。

您还可以通过 $("&lt;option&gt;&lt;/option&gt;").attr("value", item).addClass("stateView[item]")) 之类的操作添加属性和您想要的任何内容

【讨论】:

  • 谢谢,比尔。我选择了我已经接近的答案,但这对于像我这样的 jquery 业余爱好者来说是很好的信息。
猜你喜欢
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2016-06-03
相关资源
最近更新 更多