如何将对象追加到几个元素?

时间:2015-08-30 09:48:32

标签: jquery

我正在尝试创建一个包含多个具有相同选择的select元素的表单。我首先使用

创建选项
var myArray = [];
$.each(someJSONObj , function(key , value){
    var op = $("<option></option>").attr("value", value.id).text(value.name);
    myArray.push(op);   
});

然后用

将它添加到选择元素中
$.each($("select[id^='clan']"), function(){
    $(this).empty().html(myArray);
});

但选项仅在最后一次选择时可见。

我对jQuery很新,我不确定是什么

$("<option></option>").attr("value", value.id).text(value.name)

返回(alert($.type(op))显示“对象”,这无济于事。)

它是什么对象?如何将它多次附加到不同的元素上?

或者更容易,更快:如何将op变量转换为字符串,即如何获取

"<option value=myid>myname</option>"

$("<option></option>").attr("value", myid).text(myname)

然后将它附加到我的选择元素?

3 个答案:

答案 0 :(得分:0)

您的代码需要进行一次小的更改。 myArray不应该是数组,而应该是空的jQuery对象。

这样做 -

var myArray = $();

其余代码将保持不变,所有功能都将按预期进行。

或者,你可以推送像这样的元素

$.each($("select[id^='clan']"), function(){
    $(this).empty().html(myArray.join(''));
});

答案 1 :(得分:0)

您可以使用简单的字符串连接来设置选项,如:

$.each(someJSONObj , function(key , value){
    var op = "<option value='"+value.id+"'>"+value.name+"</option>"
    myArray.push(op);      
});

$.each($("select[id^='clan']"), function(){
    $(this).empty().html(myArray.get().join(''));
});

FIDDLE DEMO

答案 2 :(得分:0)

我在你的op变量的末尾使用了.wrap('<div>').parent().html()。所以它返回文本而不是对象。这里有PLUNCKER

首先我用<div>包装对象,然后获取div的HTML,这是一个simble文本而不是对象。 但最好的方法是使用简单的字符串连接我认为;

$.each(someJSONObj , function(key , value){
   var op = $("<option></option>").attr("value", value.id).text(value.name).wrap('<div>').parent().html();
    myArray.push(op);   
});