Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Obtener el valor de un elemento

Estas en el tema de Obtener el valor de un elemento en el foro de Frameworks JS en Foros del Web. Hola, estoy haciendo un calendario donde hay días normales y días señalados. Los normales son clase "dia" y los señalados son clase "habilitados". Para representar ...
  #1 (permalink)  
Antiguo 31/05/2011, 05:11
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 14 años, 5 meses
Puntos: 0
Obtener el valor de un elemento

Hola, estoy haciendo un calendario donde hay días normales y días señalados. Los normales son clase "dia" y los señalados son clase "habilitados".
Para representar los días utilizo una tabla, englobada en una clase "mes".
Lo que necesito es saber los días señalados y estoy utilizando jQuery para llevar a cabo una serie de validaciones y controles.
Para ello, en principio, recorro los meses buscando la clase "mes", pero lo que no puedo es acceder mediante el DOM, a los td que contienen los días:
Código:
var meses=$('.mes').length;
$('.mes').each(function(index){
var habilitado=$(this + ' > table > tbody > tr > td.habilitado').length;
En principio esto me daría el número de días con la clase habilitado dentro del mes que está recorriendo la colección, pero no funciona. Sin embargo, si pongo

Código:
var habilitado=$('.mes > table > tbody > tr > td.habilitado').length;
funciona pero, lógicamente, me da el valor total de todos los días habilitados contenidos en cualquier clase mes, pero no mes a mes, que es como tengo que validarlo.

El problema que tengo siempre es con $(this) cuando quiero acceder a elementos que no sean próximos. Espero vuestra ayuda para resolver este entuerto. Gracias por vuestro interés. Saludos.
  #2 (permalink)  
Antiguo 31/05/2011, 08:29
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Obtener el valor de un elemento

Es porque no puedes mezclar this con los otros selectores. Para eso, hay otra sintaxis para $.

Código Javascript:
Ver original
  1. var meses=$('.mes').length;
  2. $('.mes').each(function(index){
  3. var habilitado=$('tbody > tr > td.habilitado',this).length;

Lo que no entiendo es para que usas el selector de hijos, usa el normal:

Código Javascript:
Ver original
  1. var meses=$('.mes').length;
  2. $('.mes').each(function(index){
  3. var habilitado=$('td.habilitado',this).length;

Última edición por alexg88; 31/05/2011 a las 08:46
  #3 (permalink)  
Antiguo 31/05/2011, 10:59
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Obtener el valor de un elemento

Muchas gracias!!

Me ha ido de perlas y además he aprendido algo muy interesante. La verdad es que hay mucha información para acceder directamente a los elementos, pero poca cuando tratamos con una colección y utilizamos $(this). Si tienes a mano algún enlace interesante acerca de esto te agradecería que lo pusieras, ya que desconocía, por ejemplo, la función $('elemento',this) y creo que la tendré que utilizar a menudo ;)

Gracias una vez más por tu aportación. Un saludo.
  #4 (permalink)  
Antiguo 31/05/2011, 11:03
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Obtener el valor de un elemento

Pues tienes la documentación oficial (lo malo es que está en inglés).

Está es la página donde explica la función $:

http://api.jquery.com/jQuery/

La verdad es que JQuery tiene muchas cosas, pero hay que tener tiempo para utilizarlas.

Como curiosidad (viene en el link que te he puesto), la función $(selector,contexto) es igual que hacer $(contexto).find(selector).
  #5 (permalink)  
Antiguo 31/05/2011, 11:49
 
Fecha de Ingreso: junio-2010
Mensajes: 51
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Obtener el valor de un elemento

Gracias una vez más. He completado el código que tenía que resolver.
Y es cierto, jQuery es muy amplio pero, a base de resolver problemas lo vamos descubriendo un poco más.
Gracias por el enlace.

Etiquetas: coleccion, dom, jquery
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 10:58.