2012-05-11 4 views
71

He de empezar a usar el kit de herramientas Wijmo, y me encontré con un buen número de ejemplos de selectores similares a este en sus páginas de documentación:¿Cuál es el propósito de un colon principal en un selector jQuery?

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

Me he escrito mina de la siguiente manera:

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

¿Estos hacen lo mismo o hay algo que me falta?

Tenga en cuenta que hay dos diferencias arriba: el primer selector se antepone con dos puntos y tiene comillas para el tipo de entrada.

+4

Uno es la especializada [** ': input' **] selector (http://api.jquery.com/input-selector/), mientras que la otra es una selector genérico [** 'Element' **] (http://api.jquery.com/element-selector/). – mellamokb

Respuesta

72

:input es un jQuery extension mientras que input es un selector de CSS.

textarea, button, y select elementos coincidirían con el anterior, pero no el último.

Este último es más rápido, así que úselo para su ejemplo específico radio. Use :input cuando desee "todos los elementos del formulario", incluso si no son estrictamente <input> etiquetas. Incluso en ese caso, la recomendación es usar primero un selector de CSS estándar, luego use .filter(':input') en ese conjunto.

Porque: entrada es una extensión de jQuery y no forma parte de la especificación CSS , consultas utilizando: de entrada no puede aprovechar el impulso rendimiento proporcionado por el método nativo DOM querySelectorAll() . Para lograr el mejor rendimiento al usar: entrada para seleccionar elementos , primero seleccione los elementos usando un selector de CSS puro, luego use .filter (": entrada").

En la fuente 1.7.2, la: filtro de entrada prueba una expresión regular contra la nodeName:

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

Eso tiene sentido, ¡gracias!Y las citas de tipo son completamente opcionales? –

+1

Honestamente, nunca he usado '[type =]' con ': input' porque si estoy buscando un tipo específico, usar': input' para obtener todos primero parece ser el camino más largo. Para los selectores de CSS puro, tengo entendido que las comillas son estándar, pero los navegadores son indulgentes. Puede probarlo rápidamente con/sin aquí http://reference.sitepoint.com/css/css3attributeselectors/demo –

+0

por lo que $ (": checked") da cuadros marcados ... ¿esta también es la extensión jquery? –

6

El selector :input básicamente selecciona todos form controles (entrada, área de texto, los elementos de botón Seleccionar y) donde como input selector selecciona todos los elementos por nombre de etiqueta input.

Dado que el botón de opción es un elemento form y también usa la etiqueta input para que ambos puedan usarse para seleccionar el botón de opción. Sin embargo, ambos enfoques difieren en la forma en que encuentran los elementos y, por lo tanto, cada uno tiene diferentes beneficios de rendimiento.

14

el selector de $("input") elegirá únicos elementos de la entrada del tipo

mientras que el $(":input") selector capturará todos los elementos de entrada (tales como textarea, seleccionar, entrada, etc.)

para obtener más información, vaya a la documentación oficial de jQuery sobre el selector de :input en:

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

Cuestiones relacionadas