Foros del Web » Programando para Internet » Javascript »

Condicional si determinado DIV contiene a otro

Estas en el tema de Condicional si determinado DIV contiene a otro en el foro de Javascript en Foros del Web. Hola a todos, me gustaría hacer un condicional que ejecute una función si un DIV con determinada clase contiene a otro. Les pongo un ejemplo: ...
  #1 (permalink)  
Antiguo 08/07/2011, 19:36
zant95
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Condicional si determinado DIV contiene a otro

Hola a todos, me gustaría hacer un condicional que ejecute una función si un DIV con determinada clase contiene a otro.

Les pongo un ejemplo:

Código HTML:
Ver original
  1. <div class="info">
  2.   <div class="text"></div>
  3. </div>

Condicional:

Código Javascript:
Ver original
  1. if ('info' contiene a 'text') {
  2.   ejemplo1();
  3. }

¿Cómo podría hacer lo de "'info' contiene a 'text'"?
  #2 (permalink)  
Antiguo 08/07/2011, 22:42
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Condicional si determinado DIV contiene a otro

buenas,
puedes puedes usar la funcion getElementsByClassName. básicamente lo que tienes que hacer es lo siguiente.
  • primero obtener la referencia de div.info.
  • luego invocar getElementsByClassName desde dicha referencia.
  • determinar si la colección esta vacia. si no esta vacia, entonces invocar la función deseada.

sin embargo, hay una pequeña contraparte con getElementsByClassName: en iexplorer8 y anteriores no existe; en iexplorer9 desconozco. para que funcione en iexplorer8, debes implementar algún script que realice el mismo trabajo. ejemplos de códigos: una version de @panino5001 http://www.forosdelweb.com/showthread.php?p=3119061, y otro que habia hecho alguna vez http://www.forosdelweb.com/showthread.php?p=3102353. no obstante, creo hay que hacerle algunos arreglos para que la función pueda ser invocada desde una referencia tipo Element.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 09/07/2011, 07:40
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Condicional si determinado DIV contiene a otro

Tomando el ejemplo de @Panino5001, simplemente deberías usar un wrapper y setear el método:
Código Javascript:
Ver original
  1. if(!document.getElementsByClassName){
  2.  document.getElementsByClassName = function(cn){ /* ... */ };
  3. }
  4. var $ = function(obj){
  5.  typeof obj == 'string' && (obj = document.getElementById(obj));
  6.  !obj.contiene && (obj.contiene = function(str){
  7.   if(!obj.getElementsByClassName){
  8.    obj.getElementsByClassName = document.getElementsByClassName;
  9.   }
  10.   return !!obj.getElementsByClassName.call(obj, str).length;
  11.  });
  12. }
  13.  
  14. $('info').contiene('texto'); // true
Para esto, en la función original habría que cambiar document.getElementsByTagName por this.getElementsByTagName.
PD:No he probado el código, supongo que habrá algún fallo
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #4 (permalink)  
Antiguo 09/07/2011, 07:51
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Condicional si determinado DIV contiene a otro

Sólo aclarar que ese getElementsByClassName creo que no es mío. Me parece que es de Dustin Díaz, aunque no estoy seguro
  #5 (permalink)  
Antiguo 09/07/2011, 20:27
zant95
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Condicional si determinado DIV contiene a otro

Interesante el código, lo probaré.

Etiquetas: condicional, determinado
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 23:47.