0

我创建了一个创建元素的函数 createFileSelect():

function createFileSelect() {

    var fSpan = $("<span/>",
        {
            "id" : "fileUpload-span",
            "class" : "btn btn-add",
            "text" : "Add a file.."
        }); 

    var fInput = $("<input/>", {
        "type": "file",
        "name": "files[]",
        "id": "fileUpload"       
    });

    return $(fSpan + fInput);
}

然后我使用以下方法调用它:

$("#fileUpload-holder").append(createFileSelect());

但是,我收到一个错误

Syntax error, unrecognized expression: [object Object][object Object]

如何使用函数将 (2) 元素与 dom 一起使用?

谢谢

4

3 回答 3

2

更改 return 语句以使用 jQuery 的.add方法:

return fSpan.add(fInput);

如果您想要input在 中span,请改用:

return fSpan.append(fInput);
于 2012-11-13T17:27:58.480 回答
0

javascript中+没有为对象定义运算符,因此它们首先被强制转换为字符串(即"[object Object][object Object]"字符串)。然后,当您将字符串传递给$函数时,它会尝试将其解释为 HTML,这反过来会产生您所看到的语法错误。

要将两个 jQuery 对象合并在一起,您可以使用该.add()函数,该函数返回一个包含两者的新对象:

return fSpan.add(fInput);
于 2012-11-13T17:29:27.403 回答
0

替换您的以下行:

return $(fSpan + fInput);

对于这个:

return fSpan.add(fInput);
于 2012-11-13T17:28:01.307 回答