jQuery Búsqueda - Método filter()
Ejemplo
Cambiar el color de todos los div y luego agregar un borde a la clase "middle":
$("div").css("background", "#c8ebcc") .filter(".middle") .css("border-color", "red");
Definición y uso
El método .filter() reduce la colección de elementos coincidentes a los elementos que coinciden con el selector especificado.
Sintaxis
.filter(selector)
Parámetros | Descripción |
---|---|
selector | Valor de cadena, que contiene la expresión de selector proporcionada para que coincida con la colección actual de elementos. |
Descripción detallada
Si se proporciona un objeto jQuery que representa una colección de elementos DOM, el método .filter() construirá un nuevo objeto jQuery con un subconjunto de elementos que coinciden. El selector utilizado testeará cada elemento; todos los elementos que coinciden con el selector se incluirán en el resultado.
Pensando en la siguiente página con una lista simple:
<ul> <li>elemento de lista 1</li> <li>elemento de lista 2</li> <li>elemento de lista 3</li> <li>elemento de lista 4</li> <li>elemento de lista 5</li> <li>elemento de lista 6</li> </ul>
Podemos aplicar este método a la colección de elementos de lista:
$('li').filter(':even').css('background-color', 'red');
El resultado de esta llamada es establecer el fondo de color rojo para los elementos 1, 3, 5, ya que todos coinciden con el selector (recuerde, :even y :odd utilizan índices basados en 0).
Uso de la función de filtrado
La segunda forma de usar este método es filtrar elementos mediante una función en lugar de un selector. Para cada elemento, si la función devuelve true, el elemento se incluirá en la colección filtrada; de lo contrario, se excluirá.
Vea el siguiente fragmento de HTML algo más complejo:
<ul> <li><strong>lista</strong> elemento 1 - una etiqueta strong</li> <li><strong>lista</strong> elemento <strong>2</strong> - dos <span>etiquetas strong</span></li> <li>elemento de lista 3</li> <li>elemento de lista 4</li> <li>elemento de lista 5</li> <li>elemento de lista 6</li> </ul>
Podemos seleccionar estos elementos de lista y luego filtrarlos basándonos en su contenido:
$('li').filter(function(index) { return $('strong', this).length == 1; ).css('background-color', 'red');