#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-тегом, но все равно спасибо.