En jQuery, filter()
reduce el resultado a aquellos elementos que cumplen una condición determinada.jQuery: utilice el filtro(), pero trabaje con ambos resultados
Esto divide la lista en dos partes. Trabajar con el "buen medio" de los elementos es fácil:
$("some selector").filter(function() {
// determine result...
return result;
}).each(/* do something */);
Pero cómo puedo trabajar con la "otra mitad" de mis elementos, también - pero sin hacer el equivalente de este:
$("some selector").filter(function() {
// determine result...
return !result;
}).each(/* do something else */);
Básicamente, me gustaría alimentar dos piezas separadas /* do something */
a un solo filtro. Una para aquellos que coinciden, y otra para los demás, sin tener que filtrar dos veces. ¿Me falta una función jQuery que hace esto?
P.S .: supongo que podía hacer:
$("some selector").each(function() {
// determine result...
if (result)
/* do something */
else
/* do something else */
});
pero esperaba algo mejor.
Creo que será 'each()'. – Matt
http://jsfiddle.net/nZtRF/ Una cosa que vale la pena señalar es que con el método 'not()', el rendimiento se degrada exponencialmente a medida que aumenta el número de elementos. Para cantidades más pequeñas, es trivial. Para grandes cantidades, obtendrá un mejor rendimiento utilizando una declaración 'if()' en el filtro. Consulte la prueba en el enlace jsfiddle que se encuentra arriba y ligue con las cantidades. – user113716
@patrick: Muy cierto. Eso es un serio inconveniente. : - \ – Tomalak