2012-05-11 90 views
71

Mam rozpoczęciem korzystania z zestawu narzędzi Wijmo, i natknąłem się na dość kilka przykładowych selektorów podobne do tego w swoich stronach dokumentacja:Jaki jest cel wiodącej okrężnicy w selektorze jQuery?

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

bym napisał kopalni tak:

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

Czy robią to samo, czy jest coś, czego mi brakuje?

Należy zauważyć, że istnieją dwie różnice powyżej: pierwszy selektor jest poprzedzony dwukropkiem i zawiera cytaty dotyczące typu wejścia.

+4

jeden jest wyspecjalizowanym [** ': input' **] (http://api.jquery.com/input-selector/) wybieraka, a z drugiej strony jest ogólny [** 'Element' **] (http://api.jquery.com/element-selector/) selektor. – mellamokb

Odpowiedz

72

:input to jQuery extension, natomiast input jest selektorem CSS.

textarea, button i select elementy zostaną dopasowane przez poprzednie, ale nie drugie.

Ten drugi jest szybszy, więc używaj go do swojego konkretnego przykładu radio. Użyj opcji :input, gdy chcesz "wszystkie elementy formularza", nawet jeśli nie są to wyłącznie znaczniki <input>. Nawet w takim przypadku zaleca się najpierw użyć standardowego selektora CSS, a następnie użyć .filter(':input') w tym zestawie.

Ponieważ: wejście jest rozszerzeniem jQuery i nie jest częścią specyfikacji CSS , kwerendy przy użyciu: wejście nie może skorzystać z doładowania wydajności dostarczone przez natywny DOM querySelectorAll() metody. Aby uzyskać najlepszą wydajność podczas używania: danych wejściowych do wyboru elementów , najpierw wybierz elementy za pomocą czystego selektora CSS, a następnie użyj .filter (": input").

W źródle 1.7.2, wyrażenie: filtr wejściowy testuje wyrażenie regularne przeciwko Nazwa węzła:

input: function(elem) { 
      return (/input|select|textarea|button/i).test(elem.nodeName); 
}, 
+0

To ma sens, dzięki!A cytaty typu są całkowicie opcjonalne? –

+1

Szczerze mówiąc, nigdy nie użyłem '[type =]' z ': input', ponieważ jeśli szukam określonego typu, użycie': input' dla uzyskania wszystkich z nich wydaje się być bardzo odległe. W przypadku czystych selektorów CSS rozumiem, że cytaty są standardowe, ale przeglądarki są wybaczające. Możesz szybko przetestować go z/bez tutaj http://reference.sitepoint.com/css/css3attributeselectors/demo –

+0

, więc $ (": checked") daje zaznaczone pola. Czy to jest również rozszerzenie jquery? –

6

Selektor :input zasadzie wybiera wszystkie form kontroli (input, textarea, select i elementy przycisk), gdzie jako input wybieraka wybiera wszystkie elementy według nazwy znacznika input.

Ponieważ przycisk radiowy jest elementem form, a także używa znacznika input, aby można było użyć obu tych przycisków do wybrania przycisku opcji. Jednak oba podejścia różnią się sposobem znajdowania elementów, a zatem każdy ma inne zalety wydajności.

14

selektor $("input") będą wybierać tylko elementy wejścia typu

natomiast $(":input") selektor będzie przechwytywał wszystkie elementy wejściowe (takie jak textarea, select, input etc ...)

w celu uzyskania dalszych informacji, przejdź do oficjalnej dokumentacji jQuery o selektor na :input:

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