Почему функция jQuery val() не обновляет атрибут "value"?
я столкнулся с этой проблемой после того, как я завершил веб-сайт, так как мне пришлось реализовать историю на странице ajax (которая требует обновления определенных мест с помощью html (который включает формы с простым текстом входы - вот где проблема - они не получают свои значения, потому что у них есть свои значения, установленные val (), а не attr() - ложь)). Я обречен на замену всего javascript от
$('#xxx').val('someValue');
to
$('#xxx').attr('value', 'someValue');
или есть какая-то надежда, чтобы обойти это?
довольно тривиальный пример здесь. Как вы можете видеть в диалоговом окне, attribute стоимостью в HTML код.
1 ответов
он использует базовый уроженца element.value = 'someValue'
это, конечно, устанавливает значение свойства элемента
element.property_to_set = 'new_value';
поэтому он не изменяет атрибут, который был бы
element.setAttribute('value', 'someValue')
что attr()
не внутренне, а prop()
меняет свойство, как val()
.
Почему он меняет свойство, это свойство используется в форме представления, и это нормально, что используется, чтобы получить значение в JavaScript, а также, поэтому имеет смысл придерживаться свойства, а не атрибута, поскольку атрибут обычно используется только для установки начального значения свойства, а изменение атрибута позже с помощью javascript не обновляет свойство, что было бы противоположной проблемой того, что у вас есть, и это повлияло бы на все формы и было бы серьезной проблемой.