Filtrar un conjunto de elementos por datos
Frecuentes
Visto 118 veces
0
Diga si tiene un conjunto de elementos con algunos datos como este:
<li data-filtro="website, web app"><a href="trabajos.php?id=84"><img src="imgs/thumbs/item_tn_84.jpg" /></a></li>
<li data-filtro="website, banners"><a href="trabajos.php?id=131"><img src="imgs/thumbs/item_tn_131.jpg" /></a></li>
<li data-filtro="publicidad"><a href="trabajos.php?id=22"><img src="imgs/thumbs/item_tn_22.jpg" /></a></li>
<li data-filtro="publicidad"><a href="trabajos.php?id=45"><img src="imgs/thumbs/item_tn_54.jpg" /></a></li>
Y para filtrar algunos de ellos por su contenido de datos que coinciden con el valor de una variable llamada 'valor', me gustaría hacer algo como
var $set = $('li').filter(function(index){
return $(this).data('filtro').indexOf(valor) > -1;
});
Pero de alguna manera no puedo hacer que funcione... ¿tienen dos minutos para abrirme los ojos en esto? ¡Gracias de antemano!
2 Respuestas
1
Sé que esta es una solución diferente, y tal vez eso no sea lo que está buscando, pero puede usar un selector para eso:
$('li[data-filtro*="' + valor + '"]') //this should return all the elements you want.
contestado el 03 de mayo de 12 a las 20:05
Bueno, por alguna razón, no funciona... Error no detectado: error de sintaxis, expresión no reconocida: ['data-filtro*=website'] - elQueFaltaba
Mala mía, tuve un problema con el "
y '
. Se corrigió el ejemplo, debería funcionar ahora. - eliminarman
Bueno, eso fue todo. En realidad, filtra todos los elementos que coinciden con el valor. ¡Muchas gracias @Deleteman! - elQueFaltaba
1
prueba este
$('li').each(function(){
return $(this).data('filtro').indexOf(valor) > -1;
});
contestado el 03 de mayo de 12 a las 20:05
Gracias @Kanishka. Estaba intentando algo parecido antes... var $set = $('li').filter(function(index){ return $(this).data('filtro').indexOf(valor) > -1; } ); Pero supongo que nunca pasó por cada uno de los elementos.. - elQueFaltaba
Probé tu propuesta, y todavía sale con la excepción indexOf de antes.. - elQueFaltaba
¿Intentaste alertar a $(this).data('filtro') - Kanishka Panamáldeniya
edité mi respuesta, verifique y alerte el valor de valor - Kanishka Panamáldeniya
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas jquery or haz tu propia pregunta.
¿Qué error(es) obtienes (qué significa que no puede hacer que funcione)? ¿A qué se refiere el valor? - j08691
Dice: TypeError no capturado: no se puede llamar al método 'indexOf' de undefined - elQueFaltaba