我正在尝试找到将所选项目从一个组合框添加到另一个组合框的最佳方法.诀窍是我只想将项目添加到目标列表中但尚不存在.目前我使用的过程相当丑陋,不能像我期望的那样工作.
$('#addSelectedButton').click(function() {
var previousOption;
$('#sourceList option:selected').appendTo('#destinationList');
$('select[name=destinationList] option').each(function () {
if (this.text == previousOption) $(this).remove();
previousOption = this.text;
});
});
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是appendTo方法更多的是移动而不是添加.然后就是删除重复项的问题,这在本例中有效,但我不禁想到有更好的方法.
任何帮助将不胜感激.
谢谢,
I\xe2\x80\x99m 尝试将五个新列表项添加到无序列表的末尾#myList。我的方法是执行以下操作:
const $newItem = $("<li>New Item</li>");\nconst $ul = $("#myList");\n\nfor(let i = 0; i < 5; ++i){\n $newItem.appendTo($ul);\n}\nRun Code Online (Sandbox Code Playgroud)\n然而,这不起作用,因为它只将一个列表项插入列表中,而不是五个。
\n在 R. Murphy\xe2\x80\x99s jQuery Fundamentals (在jQuery 基础知识部分的操作练习中)中,作者提供的解决方案与我的非常接近,唯一的区别是她没有\xe2\x80\x99t 存储变量中的新列表项,而是使用 HTML 字符串:
\nconst $ul = $("#myList");\n\nfor(let i = 0; i < 5; ++i){\n $("<li>List item " + i + "</li>").appendTo($ul);\n}\nRun Code Online (Sandbox Code Playgroud)\n看来我的方法也应该有效,所以我\xe2\x80\x99m努力理解为什么它不起作用\xe2\x80\x99t。为什么是这样?
\n