当前位置: 首页 > 面试题库 >

如何使用jquery更新select的所有选项

危晨
2023-03-14
问题内容

我有一个地图对象,该对象放置在ModelAndViewhtml" target="_blank">控制器中的Spring 中,并转发到jsp视图以填充选择。第一次填充后,我想用我使用jquery
AJAX检索的json对象替换用于填充select的map对象,并使用jQuery.parseJSON转换为对象。我可以用json对象的内容动态替换select的全部内容吗?


问题答案:

对于实际修改选项,您实际上并不需要jQuery。您可以通过分配框length属性的options属性来清除旧选项SELECT,然后通过#add和添加新选项new Option()

这是使用jQuery作为XHR部分,然后直接执行选项的几个示例:

从数组中:

如果要从对象内的数组(在本例中为由options结果对象上的属性标识的数组)绘制数据:

JSON:

{
  "options": [
    {"value": "New1", "text": "New Option 1"},
    {"value": "New2", "text": "New Option 2"},
    {"value": "New3", "text": "New Option 3"}
  ]
}

JavaScript:

$.ajax({
  url: "http://jsbin.com/apici3",
  dataType: "json",
  success: function(data) {
    var options, index, select, option;

    // Get the raw DOM object for the select box
    select = document.getElementById('theSelect');

    // Clear the old options
    select.options.length = 0;

    // Load the new options
    options = data.options; // Or whatever source information you're working with
    for (index = 0; index < options.length; ++index) {
      option = options[index];
      select.options.add(new Option(option.text, option.value));
    }
  }
});

现场例子

直接来自对象:

如果将对象的属性名称用作option值,并将属性值用作选项文本:

JSON:

{
  "new1": "New Option 1",
  "new2": "New Option 2",
  "new3": "New Option 3"
}

JavaScript:

$.ajax({
  url: "http://jsbin.com/apici3/2",
  dataType: "json",
  success: function(data) {
    var name, select, option;

    // Get the raw DOM object for the select box
    select = document.getElementById('theSelect');

    // Clear the old options
    select.options.length = 0;

    // Load the new options
    for (name in data) {
      if (data.hasOwnProperty(name)) {
        select.options.add(new Option(data[name], name));
      }
    }
  }
});

现场例子

更新 :而不是

select.options.add(new Option(...));

您也可以:

select.options[select.options.length] = new Option(...);

现场例子

…我认为实际上我倾向于addoptions类似数组的东西上使用该方法(我之所以不称其为数组,是因为它有一个方法add,该数组没有该方法;并且因为如果使用push,哪些数组
确实 有,但不起作用)。

我已经测试了两种方法

  • IE6,7,8(Windows)
  • Chrome(Linux和Windows)
  • Firefox(Linux和Windows)
  • Opera(Linux和Windows)
  • Safari(Windows)

…两者都起作用。也许有Mac的人可以为我在OS X上尝试Safari。

我想说两种方式都非常非常受支持。



 类似资料:
  • 问题内容: 如何通过传递ID来通过jQuery获得select的所有选项? 我只是想获得他们的价值观,而不是文字。 问题答案: 采用:

  • 我有一些连接的选择工作良好。顺便说一句,我想把这些选择转换成很小的选择,但我发现这样做有些困难。例如,我有一个ID为的select。当我选择的一个大于零的选项时,应该会出现其他选择。之后,当我更改级联选择的选项(例如在中)时,该选项会正确更改。但是,当我选择另一次时,中的选项zero和我选择另一次时,中大于zero的选项会出现,而另一次选择中已经选择了选项。 这是我的javascript代码: 这

  • 问题内容: 我需要有关jQuery选择器的帮助。假设我有一个标记,如下所示: 除了用户单击时,如何获取所有复选框? 问题答案: 一个更完整的示例适用于您的情况: 当被点击复选框,该复选框的状态进行检查,并在当前形式的所有复选框被设置为相同的状态。 请注意,您无需从选择中排除该复选框,因为该复选框的状态将与其他所有复选框相同。如果出于某些原因确实需要排除,则可以使用以下方法:

  • 问题内容: 我不知道如何传递复选框的选定值。任何帮助或建议对我都会有很大帮助。 到目前为止,这是我的代码,我一直无法传递复选框的值 问题答案: 试试这个。 HTML代码 loadmore.php代码 在loadmore.php中输出 而已。 干杯。

  • 问题内容: 我有一个带有单个主键的表。当我尝试执行插入操作时,尝试插入具有现有键的行可能会导致冲突。我要允许插入更新所有列吗?有什么简单的语法吗?我试图让它“ upsert”所有列。 我正在使用PostgreSQL 9.5.5。 问题答案: 该语法 要求 显式命名目标列。避免这种情况的可能原因: 您有很多列,只是想缩短语法。 除了唯一列,您不 知道 列名。 必须以匹配顺序和匹配数据类型表示 “目标

  • 问题内容: 我正在尝试更新所有以’agg%’和column_name=’%userid%’之类的字符串开头的表…但是即使我能够找到选择具有特定列的所有表的选项,我也看不到在线的此类示例名称和表名称我需要执行相同的操作来更新这些表,如下所示: 帮助将不胜感激。 谢谢。 问题答案: 获取您条件的更新查询 执行