我正在尝试创建一个包含多个具有相同选择的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)
然后将它附加到我的选择元素?
答案 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(''));
});
答案 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);
});