2013-02-13 21 views
9

Mi chiedo perché la gente sembra preferire :input su input come un selettore jQuery? In sostanza, questo due linee sembrano fare la stessa cosa:Input vs: Input in jQuery

$('input:first').focus() 
$(':input:first').focus() 

Ma seconda versione è più ampiamente usare, e non trovo il motivo. Inoltre, il selettore :input sembra più lento in base a questo benchmark: http://jsperf.com/input-vs-input/2

risposta

17

:input è selettore pseudo da jQuery che comprende <buttons>, <textarea>, e.t.c

input è un tag team match che corrisponde strettamente <input>.

Questa nota aggiuntiva sulla :input è informativo:

causa: ingresso è un'estensione jQuery e non fa parte della specifica CSS, query utilizzando :input non può sfruttare la spinta di prestazioni fornite dal metodo nativo DOM querySelectorAll() . Per ottenere le migliori prestazioni quando si utilizza :input per selezionare gli elementi, selezionare prima gli elementi utilizzando un puro selettore CSS, quindi utilizzare .filter(":input").

--from https://api.jquery.com/input-selector/

4

input è solo il selettore dell'elemento di input. :input seleziona anche textarea, select e button (controlli modulo).

Non è necessariamente una questione di preferenza poiché in realtà fanno cose un po 'diverse.

1

:input seleziona tutti gli elementi di input, textarea, select e button, mentre input seleziona solo gli elementi con un tag di input.