Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] como eliminar un elemento dependiendo de la class

Estas en el tema de como eliminar un elemento dependiendo de la class en el foro de Jquery en Foros del Web. Hola amig@s, quiero eliminar una etiqueta span en caso de que haya una coincidencia. Os muestro mi HTML y luego mi código Javascript/jQuery. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 07/01/2014, 09:09
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 14 años
Puntos: 4
Exclamación como eliminar un elemento dependiendo de la class

Hola amig@s, quiero eliminar una etiqueta span en caso de que haya una coincidencia. Os muestro mi HTML y luego mi código Javascript/jQuery.

Código HTML:
Ver original
  1. <ul class="list-pages">
  2.  <span class='page_item page-item-686'></span>
  3.  <span class='page_item page-item-693'></span>
  4.  <span class='page_item page-item-690'></span>
  5.  <span class='page_item page-item-688'></span>
  6.  
  7.  <li class="page_item page-item-686 page_item_has_children"></li>
  8. </ul>

Código Javascript:
Ver original
  1. var i,j;
  2. var numList = $('ul.list-pages li').length;
  3. var numSpan = $('ul.list-pages span').length;
  4. var spanClass = new Array();
  5. var liClass = new Array();
  6.  
  7. for(i=0; i<= numSpan; i++){
  8.  for(j=0; i<= numList; i++){
  9.   spanClass[i] = $('ul.list-pages span:eq('+i+')').attr('class');
  10.   liClass[j] = $('ul.list-pages li:eq('+j+')').attr('class');
  11.   if(spanClass[i] != liClass[j]){
  12.    $('ul.list-pages span:eq('+i+')').css('display', 'none');
  13.   }
  14.  }
  15. }

Mi elemento <li> dentro de su clase tiene una numeración que es la de 686, y de los 4 <span> que hay con cada uno con una numeración hay uno que coincide con la numeración de <li>. Pues bien, los <span> que no coincidan quiero aplicarles el display:none del css, pero no acabo de encontrar la solución.

Es decir, de los 4 <span> que hay solo puede quedar uno, el que coincida la numeración de la clase con la del <li>.

¿Me podéis ayudar?

Gracias de antemano.
  #2 (permalink)  
Antiguo 07/01/2014, 09:14
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 3 meses
Puntos: 397
Respuesta: como eliminar un elemento dependiendo de la class

Bueno, en vista de que usas jQuery haz esto (simplificando todo el código que tu tienes):

Código Javascript:
Ver original
  1. $('ul.list-pages span').each(function(){
  2.     var cssSpan   = $(this).attr('class'),
  3.         parentCss = $(this).closest('li').attr('class');
  4.     if( cssSpan != parentCss ){
  5.         $(this).hide();
  6.     }
  7. });

Así no te vale?

Edito: Solo había visto el javascript, el HTML no lo determiné muy bien. Lo que haces con el HTML es 100% incorrecto ya que un ul solo debe contener li y dentro de los li es que metes el contenido que necesites, en este caso los span (de allí viene mi respuesta)

Debes de hacer algo así:

Código HTML:
Ver original
  1. <ul class="list-pages">
  2.     <li class="page_item page-item-686 page_item_has_children">
  3.         <span class='page_item page-item-686'></span>
  4.         <span class='page_item page-item-693'></span>
  5.         <span class='page_item page-item-690'></span>
  6.         <span class='page_item page-item-688'></span>
  7.     </li>
  8. </ul>

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 07/01/2014 a las 09:23
  #3 (permalink)  
Antiguo 07/01/2014, 16:34
Avatar de sergi_multimedia  
Fecha de Ingreso: noviembre-2010
Mensajes: 213
Antigüedad: 14 años
Puntos: 4
Respuesta: como eliminar un elemento dependiendo de la class

Hola jonni09lo, te doy mil gracias! has dado con el algoritmo! Ahora ya he conseguido lo que quería.


Etiquetas: class, dependiendo, elemento, html, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:02.