:input
является jQuery extension, а input
- это селектор CSS.
textarea
, button
и select
элементы будут соответствовать первому, но не последнему.
Последнее быстрее, поэтому используйте его для вашего конкретного примера radio
. Используйте :input
, если хотите «все элементы формы», даже если они не являются строго <input>
тегами. Даже в этом случае рекомендуется использовать стандартный селектор CSS, затем используйте .filter(':input')
на этом наборе.
Потому что: вход является расширением JQuery и не является частью спецификации CSS , запросы с использованием: вход не может воспользоваться повышением производительности предоставляемых нативным методом DOM querySelectorAll() . Для достижения наилучшей производительности при использовании: input для выбора элементов , сначала выберите элементы, используя чистый CSS-селектор, затем используйте .filter (": input").
В 1.7.2 источника,: входной фильтр проверяет регулярное выражение против NodeName:
input: function(elem) {
return (/input|select|textarea|button/i).test(elem.nodeName);
},
One является специализированным [** ': input' **] (http://api.jquery.com/input-selector/) селектор, в то время как другой представляет собой generic [** 'Element' **] (http://api.jquery.com/element-selector/) селектор. – mellamokb