javascript - 无法将选项添加到多个选项组

标签 javascript jquery html

我正在尝试向多个optgroup添加一个选项,问题是这个选项只显示在单个optgroup上,我不知道这个机制是否是默认逻辑html 或者我犯了一个错误:

$(document).ready(function() {
      $('#options').append('<optgroup label="category1"></optgroup>');
      $('#options').append('<optgroup label="category2"></optgroup>');
    
      var opt1 = new Option("test1", 1);
      var opt2 = new Option("test2", 2);
    
      $('#options optgroup[label=category1]').append(opt1);
      $('#options optgroup[label=category2]').append(opt1);
      $('#options optgroup[label=category1]').append(opt2);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<select id="options">
</select>

结果:

enter image description here

如您所见,选项test1与2个类别相关联,但仅显示在单个类别上。

This is a fiddle.

最佳答案

发生这种情况是因为 opt1 引用了相同的 DOM。追加第二次只是改变 dom 位置。一个元素不能出现在两个不同的地方。

您可以创建新的 DOM 对象或克隆它

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<select id="options">
</select>

$(document).ready(function() {
      $('#options').append('<optgroup label="category1"></optgroup>');
      $('#options').append('<optgroup label="category2"></optgroup>');
    
      var opt1 = new Option("test1", 1);
      var opt2 = new Option("test2", 2);
    
      
      $('#options optgroup[label=category1]').append(opt1);
      $('#options optgroup[label=category2]').append($(opt1).clone());
      $('#options optgroup[label=category1]').append(opt2);
    });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<select id="options">
</select>

关于javascript - 无法将选项添加到多个选项组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54152102/

相关文章:

javascript - 需要恢复点击间隔

jquery - Packery js 洗牌并适合容器

html - 在 IONIC 上面的选项卡上放一个元素?

html - 创建下划线过渡 CSS

javascript - 随机数循环程序 - javascript

javascript - 使用纯JS仅对某个类的一个div调用函数

javascript - 如果不在数组中 -> array.push

javascript - 如果宽度大于 767px 是否启用插件?

javascript - 如何使 div 与另一个 CSS 重叠?

javascript - toString和数组join的时间复杂度差异