2012-05-11 4 views
71

Я начало использования инструментария Wijmo, и наткнулся на довольно много примеров селекторов, подобных этим в своих страницах документации:Какова цель ведущего двоеточия в селекторе jQuery?

$(":input[type='radio']").wijradio(); 

Я бы написал мой так:

$('input[type=radio]').wijradio(); 

Они делают то же самое или есть что-то, что мне не хватает?

Обратите внимание, что существуют два отличия: первый селектор имеет префикс двоеточия и имеет кавычки для типа ввода.

+4

One является специализированным [** ': input' **] (http://api.jquery.com/input-selector/) селектор, в то время как другой представляет собой generic [** 'Element' **] (http://api.jquery.com/element-selector/) селектор. – mellamokb

ответ

72

: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); 
}, 
+0

Это имеет смысл, спасибо!А кавычки типа полностью необязательны? –

+1

Честно говоря, я никогда не использовал '[type =]' с ': input', потому что если я ищу конкретный тип, использование': input', чтобы получить все из них, сначала кажется длинным. Для чистых селекторов CSS я понимаю, что кавычки являются стандартными, но браузеры прощают. Вы можете быстро протестировать его с помощью/без здесь http://reference.sitepoint.com/css/css3attributeselectors/demo –

+0

так что $ (": checked") указывает флажки. Это также расширение jquery? –

6

Селектор :input в основном выбирает все элементы управления form (вход, текстовое поле, выбери и кнопку элементы), где в качестве input селектора выбирает все элементы от имени тега input.

Поскольку радиокнопка представляет собой элемент form, а также использует тег input, чтобы оба они могли использоваться для выбора переключателя. Однако оба подхода отличаются тем, как они находят элементы, и, следовательно, каждый из них имеет разные преимущества в производительности.

14

селектор $("input") будет выбирать только элементы ввода типа

в то время как $(":input") селектор будет захватывать все элементы входов (например, текстовое поле, выбор, ввод и т. д.)

для получения дополнительной информации, зайдите в официальную документацию jQuery о :input селекторные:

http://api.jquery.com/input-selector/