Преобразовать функцию jQuery insertBefore() в before() для добавления скрытого ввода

#javascript #jquery #hidden-field

#javascript #jquery #скрытое поле

Вопрос:

У меня есть блок кода, который использует jQuery для добавления скрытого поля (с соответствующими атрибутами), созданного attr() функцией. В настоящее время я использую insertBefore() функцию, как показано ниже:

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

Это правильно добавляет новый скрытый элемент ввода DOM перед submit кнопкой моей #form_id формы, но я хотел бы использовать before() вместо этого, поскольку выбор моей цели перед определением содержимого кажется мне более читаемым.

Ответ №1:

Непосредственно перед публикацией моего вопроса выше, я попытался еще раз использовать before() с нуля, и каким-то образом на этот раз мне это удалось. Поэтому я решил опубликовать свой вопрос и ответ (решение) в надежде, что это может помочь кому-то еще, пытающемуся сделать то же самое в будущем:

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

Этот код по существу возвращает новый элемент ввода DOM с установленными атрибутами в {} объекте, который мы передали. Этот возвращаемый элемент является content аргументом, который нам нужно передать before() , чтобы вставить наше скрытое поле перед элементом в нашем селекторе, submit кнопкой нашего идентификатора в данном случае.

Комментарии:

1. Различия в этих двух методах вставки четко объяснены в документах

2. @charlietfl Мы это знаем, но их базового примера <p>Test</p> серьезно не хватает. Кроме того, в документах не показано, как вставить динамически созданный элемент, что я объяснил выше.

3. Отлично … создание элемента — это тоже jQuery 101

4. @charlietfl Так что это каким-то образом делает мой вклад менее ценным здесь? ага.

Ответ №2:

Может быть, это поможет вам.

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

Комментарии:

1. Я уже предоставил решение в своем ответе, что является лучшим способом, когда ваши атрибуты являются динамическими значениями (переменными), а не просто статическим HTML-тегом, но все равно спасибо.