JQuery追加选择数组

很简单,但猜猜是什么,不适合我。 我有一个逗号分隔的列表,如下所示:Option1,Option2,Option3,我想附加到所以它变为Option1Option2Option3

我可以像这样“拆分”列表(在获取列表的函数内):

 var optionsarray = $(this).val().split(','); $(optionsarray).each(function(i){ var seloption = ''+optionsarray[i]+''; }); 

但是现在如何将seloption附加到我的选择列表中。 如果我放

 $('#selecttoappendto').append(''+optionsarray[i]+''); 

要么

 $('#selecttoappendto').append(seloption); 

在每个循环内部没有任何反应。 把它optionsarray[0]我可以附加的每个外面说的optionsarray[0] ,或者optionsarray[1]等等但是我无法在任何方式(每个内部或外部)附加optionsarray[i] 。 请帮忙 – 提前谢谢

从空字符串开始,您可以使用t +=在循环中构建一个字符串。 然后.append()字符串。

 var optionsarray = $(this).val().split(','); var seloption = ""; $.each(optionsarray,function(i){ seloption += ''; }); $('#selecttoappendto').append(seloption); 

或另一种选择是分别构建元素,将它们存储在容器中,然后从容器中追加它们。

 var optionsarray = $(this).val().split(','); var temp_sel = $(' 

修复了children之后的遗失()

这是我写的和使用的; 它比user113716提供的解决方案快一点,因为你正在跳过创建临时选择,所有那些追加到那个临时选择(即使它是一个DOM片段,它仍然需要一些时间),你也跳过了.children()在最后追加的末尾找到并解开。

 // Appends multiple elements all at once; maintains chaining $.fn.appendAll = function ($eleArr) { var numEles = $eleArr.length , $useEle = new $(); if (numEles) { while (numEles--) { $useEle = $eleArr[numEles].add($useEle); } return $(this).append($useEle); } }; // Prepends multiple elements all at once; maintains chaining $.fn.prependAll = function ($eleArr) { var numEles = $eleArr.length , $useEle = new $(); if (numEles) { while (numEles--) { $useEle = $eleArr[numEles].add($useEle); } return $(this).prepend($useEle); } }; 

所以:

 var optsArr = $(this).val().split(','), $options = [], thisOption; $.each(optsArr, function(i) { thisOption = ''; $options.push($(thisOption)); }); $yourSelect.appendAll(optsArr); 

我实际上是为这个编写了那些插件; 这样做,我在250毫秒内建立了1500+选项。 :d