dar*_*ong 0 javascript arrays jquery object
我试图制作一个脚本,根据JSON创建一些按钮,我用我需要的属性传递给它,如下所示:
var opts = {};
opts.buttons = [{
type: "button",
klass: "btn-default",
text: "No"
}, {
type: "button",
klass: "btn-primary",
text: "Yes"
}];
var arr = [];
var button = $("<button></button>");
_.each(opts.buttons, function (v, k) {
button.prop("type", v.type)
.prop("class", v.klass)
.html(v.text);
arr.push(button);
});
Run Code Online (Sandbox Code Playgroud)
然后,将它们串起来,就像这样:
var str = arr.join('');
$('#someEl').html(str);
Run Code Online (Sandbox Code Playgroud)
但这不符合我的想法.返回[object Object] [object Object]而不是按钮标签.
我怎样才能做到这一点?任何帮助都会非常好.
试试这个:
opts.buttons = [{
type: "button",
klass: "btn-default",
text: "No"
}, {
type: "button",
klass: "btn-primary",
text: "Yes"
}];
var arr = [];
_.each(opts.buttons, function (v, k) {
var button = $("<button></button>");
button.prop("type", v.type)
.prop("class", v.klass)
.html(v.text);
arr.push(button);
});
Run Code Online (Sandbox Code Playgroud)
然后...
_.each(arr, function (b) {
$('#someEl').append(b);
});
Run Code Online (Sandbox Code Playgroud)
注1:opts.buttons是不是 JSON,它是对象常量.
注2:$('#someEl').html设置HTML内容,即其参数应为字符串.您可以使用:
var arr = [];
_.each(opts.buttons, function (v, k) {
var button = $("<button></button>");
button.prop("type", v.type)
.prop("class", v.klass)
.html(v.text);
arr.push(button[0].outerHTML);
});
var str = arr.join('');
$('#someEl').html(str);
Run Code Online (Sandbox Code Playgroud)
如果你坚持使用它.
注3:你得到[object Object]因为jQuery按钮元素被转换为字符串(因为join函数的调用),如果toString给定对象的方法没有被覆盖,它使用toString提供[object Object]表示的默认实现.