将jQuery对象存储到Array中以供以后使用

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]而不是按钮标签.

我怎样才能做到这一点?任何帮助都会非常好.

Min*_*hev 5

试试这个:

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]表示的默认实现.