将 jQuery 函数 insertBefore() 转换为 before() 以附加隐藏输入

Convert jQuery function insertBefore() to before() for appending a hidden input

我有一段代码使用 jQuery 附加由 attr() 函数创建的隐藏字段(具有适当的属性)。我目前正在使用 insertBefore() 函数,如下所示:

$('<input>').attr({
    name: 'token',
    type: 'hidden',
    value: 'value',
}).insertBefore( $('#form_id :submit') );

这在我的 #form_id 表单的 submit 按钮之前正确地附加了一个新的隐藏 DOM 输入元素,但我想改用 before(),因为在定义内容之前选择我的目标对我来说似乎更具可读性。

就在 post 回答我上面的问题之前,我又尝试了一次从头开始使用 before(),这次我以某种方式成功了。所以我决定 post 我的问题和答案(解决方案),希望它能帮助将来尝试做同样事情的其他人:

$('#form_id :submit').before(
    $("<input>", {
        name: 'token',
        type: 'hidden',
        value: 'value',
    })
);

这段代码本质上是 returns 一个新的 DOM 输入元素,它具有我们传递的 {} 对象中的设置属性。这个返回的元素是我们需要传递给 before()content 参数,以便在我们的选择器中的元素之前插入我们的隐藏字段,在本例中是我们 ID 的 submit 按钮。

也许这会对你有所帮助。

$('#form_id').before('<input type="text" name="token" value="value" />');