Подтвердить что ты не робот

JQuery (#id).val() vs. getElementById (#id).value

Я искал, но я могу только найти статьи, рассказывающие об одном или другом. Какой из них лучше?

Я создаю небольшое веб-приложение, где производительность не вызывает большого беспокойства, так как ничего сложного не происходит.

Я рассмотрел использование функции jQuery val(), так как, возможно, он решает некоторые несогласованности, о которых я не знаю, но getElementById.value IS быстрее (хотя конечный пользователь не заметит.)

И какой из них я должен использовать? Является ли метод non-native jQuery более низкой производительностью для обеспечения большей совместимости?

4b9b3361

Ответ 1

Самое большое преимущество использования jQuery().val() over document.getElementById().value заключается в том, что первая будет не выдавать ошибку, если не сопоставляется ни один элемент, где - как последний. document.getElementById() возвращает null, если никакие элементы не сопоставляются, где-as jQuery() возвращает пустой объект jQuery, который все еще поддерживает все методы (но val() вернет undefined).

При использовании .value для элементов формы существует не несогласованность. Однако jQuery.val() стандартизирует интерфейс для сбора выбранного значения в блоках выбора; где, как и в стандартном HTML, вам нужно использовать .options[this.selectedIndex].value.

Ответ 2

Если вы используете элементы <select>, .value не будет работать, а .val() будет.

Я бы не возражал против производительности просто получения ценности. Если вам нужна лучшая производительность, возможно, вам не следует использовать библиотеку вообще.

Ответ 3

jQuery делает так много приятных маленьких ошибок обработки (смотрите ниже), что я бы никогда не написал строку javascript без jquery в браузере снова.

  • Во-первых, val работает с группами флажков, выбирает, получает html и тому подобное.
  • Во-вторых, $ позволяет использовать селекторы sizzle, поэтому в будущем вы можете легко переключаться между ID и путем CSS.
  • В-третьих, ваш код будет намного легче читать и поддерживать, если вы просто используете jQuery, что время, которое вы экономите на поддержке кода, перевешивает любое ускорение, которое, как вы признаете, ваши пользователи не увидят. Наконец, jQuery - очень популярная, очень широко используемая библиотека. Они будут зарабатывать $ и val так быстро, как могут.

Ответ 4

Я изучал различия в производительности с этим в последнее время, и, что неудивительно, использование vanilla JS для захвата значения происходит быстрее, чем использование jQuery. Тем не менее, резервные копии, которые jQuery обеспечивает для предотвращения ошибок, например, что сказал @Matt, очень полезны. Поэтому я склонен выбирать лучшее из обоих миров.

var $this = $(this),
    $val = this.value || $this.val();

С этим условным утверждением, если this.value пытается выбросить ошибку, код возвращается к методу jQuery .val().

Ответ 5

Я думаю, что использование чистого Javascript быстрее по следующим причинам:

  1. Вам не придется учиться больше, чем чистый js
  2. Если вы не хотите ошибок, используйте catch(exeption) (я думаю...)
  3. Вам не нужно тратить немного больше времени, чтобы набрать код для jquery
  4. Браузер реагирует быстрее, если вы не используете jquery
  5. Обычный js работает (лучше) на флажках @johndodo

Спасибо, что выслушали мой ответ.

Ответ 6

Я бы использовал jQuery val(). Более короткий код означает более быстрое время загрузки (на мой взгляд).