jQuery sucintamente jQuery seleccionando

Los filtros jQuery personalizados pueden seleccionar elementos cuando se usan solos

No es necesario proporcionar un elemento real junto con un filtro, como $ ('div: oculto'). Es posible simplemente pasar el filtro solo, en cualquier lugar donde se espera una expresión de selector.

Algunos ejemplos:

 // Selecciona todos los elementos ocultos $ (': hidden'); // Selecciona todos los elementos div, luego selecciona solo los elementos pares $ ('div'). Filter (': even');

Grokking el: Oculto y: Filtro visible

Los filtros de selección de jQuery personalizados :oculto y :visible No tome en cuenta la propiedad de visibilidad CSS como se podría esperar. La forma en que jQuery determina si un elemento está oculto o visible es si el elemento consume cualquier espacio en el documento. Para ser exactos, un elemento es visible si su navegador lo informa offsetWidth o offsetHeight es mayor que 0. De esa manera, un elemento que podría tener un CSS monitor valor de bloquear contenido en un elemento con una monitor valor de ninguna Informaría con precisión que no es visible..

Examine el código cuidadosamente y asegúrese de entender por qué el valor devuelto es cierto a pesar de

ser seleccionado tiene un estilo en línea de bloqueo de pantalla.

    

Uso del método Is () para devolver un valor booleano

A menudo es necesario determinar si el conjunto de elementos seleccionado contiene, de hecho, un elemento específico. Utilizando la es() Método, podemos verificar el conjunto actual contra una expresión / filtro. El cheque volverá cierto si el conjunto contiene al menos un elemento que está seleccionado por la expresión / filtro dado. Si no contiene el elemento, un falso se devuelve el valor. Examina el siguiente código:

    
jQuery
jQuery

Debe ser evidente que el segundo alerta() devolverá un valor de falso porque nuestro conjunto de envoltorios no contenía una

que tenia un carné de identidad valor de atributo de i2. los es() El método es bastante útil para determinar si el conjunto de envoltura contiene un elemento específico.

Notas: A partir de jQuery 1.3, la es() El método soporta todas las expresiones. Anteriormente, expresiones complejas como las que contienen selectores de jerarquía (como +, ~, y >) siempre devuelto cierto.

El filtro es usado por otras funciones internas de jQuery. Por lo tanto, todas las reglas que se aplican allí, se aplican aquí, también.

Algunos desarrolladores usan es ('. clase') para determinar si un elemento tiene una clase específica. No olvides que jQuery ya tiene un método para hacer esto llamado hasClass ('clase'), que se puede utilizar en elementos que contienen más de un valor de clase. Pero la verdad sea dicha, hasClass () es sólo un envoltorio conveniente para el es() método.


Puede pasar jQuery más de una expresión de selector

Puede proporcionar el primer parámetro de la función jQuery varias expresiones separadas por una coma: $ ('expresión, expresión, expresión'). En otras palabras, no está limitado a seleccionar elementos utilizando solo una expresión. Por ejemplo, en el siguiente ejemplo, estoy pasando la función jQuery tres expresiones separadas por una coma.

    
jQuery

es el

  • mejor!

Cada una de estas expresiones selecciona elementos DOM que se agregan al conjunto de envoltura. Entonces podemos operar en estos elementos utilizando métodos jQuery. Tenga en cuenta que todos los elementos seleccionados se colocarán en el mismo conjunto de envoltorios. Una forma ineficiente de hacer esto sería llamar a la función jQuery tres veces, una para cada expresión.


Comprobación del conjunto de envoltura .length para determinar la selección

Es posible determinar si su expresión ha seleccionado algo al verificar si el conjunto de envoltura tiene una longitud. Puedes hacerlo usando la propiedad array longitud. Si el longitud La propiedad no devuelve 0, entonces usted sabe que al menos un elemento coincide con la expresión que pasó a la función jQuery. Por ejemplo, en el código a continuación revisamos la página para un elemento con un carné de identidad de "no aquí" ¿Adivina qué? No está aquí!

       

Notas: Si no es obvio, la propiedad de longitud también puede informar el número de elementos en el conjunto de envoltura; dicho de otra manera, cuántos elementos fueron seleccionados por la expresión pasada a la función jQuery.


Creación de filtros personalizados para seleccionar elementos

Las capacidades del motor de selección de jQuery se pueden ampliar creando sus propios filtros personalizados. En teoría, todo lo que está haciendo aquí se basa en los selectores personalizados que ya forman parte de jQuery. Por ejemplo, supongamos que nos gustaría seleccionar todos los elementos en una página web que estén absolutamente posicionados. Ya que jQuery no tiene ya una costumbre. : positionAbsolute Filtro, podemos crear nuestro propio.

    
absoluto
absoluto
estático
absoluto
estático
absoluto

Lo más importante que hay que entender aquí es que no está limitado a los selectores predeterminados que proporciona jQuery. Puedes crear el tuyo propio. Sin embargo, antes de dedicar tiempo a crear su propia versión de un selector, simplemente intente filtrar() Método con una función de filtrado especificada. Por ejemplo, podría haber evitado escribir el : positionAbsolute selector simplemente filtrando el

Elementos en mi ejemplo anterior con una función que paso a la filtrar() método.

 // Retirar 
elementos de la envoltura // conjunto que no están posicionados absolutamente $ ('div'). filter (function () return $ (this) .css ('position') === 'absolute';); // o // Eliminar todos los elementos de la envoltura // conjunto que no están posicionados absolutamente $ ('*'). filter (function () return $ (this) .css ('position') === 'absolute' ;);

Notas: Para obtener información adicional acerca de cómo crear sus propios selectores, sugiero lo siguiente: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm


Diferencias entre el filtrado por orden numérico y las relaciones DOM

jQuery proporciona filtros para filtrar un conjunto de envoltura por el contexto numérico de un elemento dentro del conjunto.

Estos filtros son:

  • :primero
  • :último
  • :incluso
  • :impar
  • : eq (index)
  • : gt (índice)
  • : lt (index)

Notas: Los filtros que filtran el conjunto de envoltorio lo hacen al filtrar elementos en el conjunto en un punto de inicio de 0, o un índice de 0. Por ejemplo : eq (0) y :primero Accede al primer elemento del conjunto. - $ ('div: eq (0)') - que está en un índice de 0 Esto está en contraste con el : nth-child filtro que es de un solo índice. Significado, por ejemplo, : nth-child (1) devolverá el primer elemento hijo, pero tratando de usar : nth-child (0) no trabajará. Utilizando : nth-child (0) siempre seleccionará nada.

Utilizando :primero seleccionará el primer elemento en el conjunto mientras :último Seleccionará el último elemento del conjunto. Recuerde que filtran el conjunto según la relación (jerarquía numérica que comienza en 0) dentro del conjunto, pero no las relaciones de los elementos en el contexto del DOM. Dado este conocimiento, debería ser obvio por qué los filtros :primero, :último, y : eq (index) siempre devolverá un solo elemento.

Si no es obvio, permítame explicarlo más. La razón que :primero solo puede devolver un único elemento porque solo puede haber un elemento en un conjunto que se considera primero cuando solo hay un conjunto. Esto debería ser bastante lógico. Examine el código de abajo para ver este concepto en acción.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Con una comprensión clara de la manipulación del conjunto en sí, podemos aumentar nuestra comprensión de la selección de elementos mediante el uso de filtros que seleccionan elementos que tienen relaciones únicas con otros elementos dentro del DOM real. jQuery proporciona varios selectores para hacer esto. Algunos de estos selectores son personalizados, mientras que otros son expresiones CSS bien conocidas para seleccionar elementos DOM.

  • ancestro descendiente
  • padre> niño
  • prev + next
  • prev ~ hermanos
  • : nth-child (selector)
  • :primer hijo
  • :último niño
  • :hijo único
  • :vacío
  • : tiene (selector)
  • :padre

El uso de estos filtros de selección seleccionará elementos en función de su relación dentro del DOM como pertenecientes a otros elementos en el DOM. Para demostrar este concepto, veamos algunos códigos.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

Si te sorprende el hecho de que $ ('li: nth-child (impar)'). text () devuelve el valor 135135, aún no está incorporando filtros de relación. La declaración, $ ('li: nth-child (impar)') dicho verbalmente sería "encontrar todo

  • elementos en la página web que son niños, y luego los filtran por niños extraños. "Bueno, da la casualidad de que hay dos estructuras en la página que tienen una agrupación de hermanos compuesta por
  • s. Mi punto es este: el conjunto de envoltura está formado por elementos basados ​​en un filtro que tiene en cuenta la relación de un elemento con otros elementos en el DOM. Estas relaciones se pueden encontrar en múltiples ubicaciones.

    El concepto a quitar es que no todos los filtros se crean igualmente. Asegúrate de que entiendes cuáles filtran en base a las relaciones DOM-e.g. :hijo único-y cuáles filtran por la posición de los elementos, p. ej.. : eq ()-en el set envuelto.


    Selección de elementos por identificación cuando el valor contiene metacaracteres

    Los selectores jQuery utilizan un conjunto de meta-caracteres (por ejemplo,. # ~ [] => ) que cuando se usa como parte literal de un nombre (por ejemplo,. id = "# foo [bar]") debe ser escapado. Es posible escapar de los caracteres colocando dos barras invertidas antes del carácter. Examine el código a continuación para ver cómo usar dos barras invertidas en la expresión de selección nos permite seleccionar un elemento con un valor de atributo de id de #foo [bar].

        
    jQuery

    Aquí está la lista completa de caracteres que deben escaparse cuando se usan como parte literal de un nombre.

    • #
    • ;
    • Y
    • ,
    • .
    • +
    • *
    • ~
    • '
    • :
    • "
    • !
    • ^
    • PS
    • El
    • ]
    • (
    • )
    • =
    • >
    • |
    • /

    Filtros de selector de apilamiento

    Es posible apilar filtros de selección-e.g. a [title = "jQuery"] [href ^ = "http: //"]. El ejemplo obvio de esto es seleccionar un elemento que tenga atributos específicos con valores de atributos específicos. Por ejemplo, el código de jQuery a continuación solo seleccionará Elementos en la página HTML que:

    • Contener un href atributo con un valor inicial de "http: //"
    • Tener un título atributo con un valor de "jQuery"

    Solo uno esta siendo seleccionado.

        jQuery.com jQuery.com 1 jQuery.com    

    Observe en el código cómo hemos apilado dos filtros para lograr esta selección.

    Se pueden apilar otros filtros de selección además de los filtros de atributos. Por ejemplo:

     // Seleccionar el último 
    contenido en el // conjunto de envoltorios que contiene el texto "jQuery" $ ('div: last: contiene ("jQuery")') // Obtiene todas las casillas de verificación que están visibles y seleccionadas $ (': checkbox: visible: check ')

    El concepto que se debe quitar es que los filtros de selección se pueden apilar y utilizar en combinación.

    Notas: También puede anidar y apilar filtros, por ejemplo,. $ ('p'). filter (': not (: first): not (: last)')


    Filtros de selección de nidos

    Los filtros selectores pueden estar anidados. Esto le permite ejercer filtros de una manera muy concisa y potente. A continuación, doy un ejemplo de cómo puede anidar filtros para realizar un filtrado complejo..

        
    javascript
    jQuery
    javascript
    jQuery
    javascript
    jQuery

    El concepto a quitar es que los filtros selectores pueden ser anidados.

    Notas: También puede anidar y apilar filtros, por ejemplo,. $ ('p'). filter (': not (: first): not (: last)')


    Grokking el: nth-child () Filtro

    los : nth-child () El filtro tiene muchos usos. Por ejemplo, digamos que solo desea seleccionar cada tres

  • elemento contenido dentro de un