Ver Mensaje Individual
  #8 (permalink)  
Antiguo 23/07/2013, 16:58
osobuco
 
Fecha de Ingreso: julio-2013
Mensajes: 34
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: javascript: buscar el siguiente numero mayor de una lista

Bueno al final lo solucioné de la manera mas compleja posible buscándome la vida como pude , bueno os pongo la solución que le di , que es capaz de crearle una gran jaqueca al mismo macgiver.
la solución es muy especifica para mi caso , que es joomla 2.5 con el componente jevents + modulo last_events. y una librería juery llamada sly (es un carrusel)


el tema es que tengo una agenda en jevents que se cargaba en una tabla , ice que se cargara en una lista , a demás quería que cunado hicieses click en <li> cargara el enlace correspondiente así que me puse con la plantilla lisent_body.php de jevents y cambie la linea:
Código HTML:
		if( $event_day_month_year <> $chdate ){
			$date =JEventsHTML::getDateFormat( $row->yup(), $row->mup(), $row->dup(), 1 );
						
			
		}

		echo '<li   id="_'.$row->ev_id().'"  class="'.$row->uid().'" ><div class="bigday"><script> 
<-------- aquí defino el id de la lista con la id del evento de jevents con un guión bajo delante por el tema de que las id's no deben comenzar números y el class con otra id que tiene jevents que esta cifrada o en hexadecimal o algo raro.



Código HTML:

$(".'.$row->uid().'").click(function(){$("#con").fadeOut("slow").load("'.$row->viewDetailLink($row->yup(),$row->mup(),$row->dup(),false).' #detalleframe").fadeIn("slow");});
</script> 
<----------- aquí le digo k al hacer click en la classe codificada #con se pire a dormir con un fundido y cargé el enlace en #con despertando de nuevo ademas de la url de destino que la genero con php de la base de datos de jevents
solo quiero la división con el id detalleframe y así se lo hago saber.
El tema es que tengo que generar este código tantas veces como lineas tenga la lista .

Se que se puede hacer de una vez pero no me funcionaba (la consola de errores se volvía loca )



bueno ya tenia puesto el carrusel que bonito y le hacia click y cargaba el enlace en un div con id #con si recargar.



Ahora viene lo chungo el carrusel sly que integré en mi sitio definía el <li class="active" > como el primer objeto a mostrar en el slide.

Entonces publiqué esta pregunta en el foro para ver si podía hacer un script que capturara la fecha de hoy la comprase con la id de los <li> y cambiase la clase active
al mas reciente en el futuro

pronto me di cuenta que de poco me valdría.

El Carrusel sly que integré en mi sitio definía la posición inicial
con una opción en el archivo horizontal.js que decía algo así como

Startat ="2"

y ese "2" nada tenia que ver con la id mas bien era la posición de la linea dentro de la lista.


joder que problema....


entonces en la web de jevents vi un modulo que mostraba los eventos mas cercanos lo baje lo instalé lo configuré para que mostrara en evento mas cercano en el futuro
y le di el estilo display:none; (chapuzas mías).
Luego modifique el fichero de la platilla default lastet.php (o algo así)
ni corto ni perezoso copié dentro todo el contenido del archivo horizontal.js que era donde estaba la opción de startat y sumé un un par de lineas. (ahora las comento)

Código HTML:
<script>





jQuery(function($){
	"use strict";

	// -------------------------------------------------------------
	//   Basic Navigation
	// -------------------------------------------------------------
	(function () {
		var $frame  = $("#basic");
		var $slidee = $frame.children("ul").eq(0);
		var $wrap   = $frame.parent();
		var $foobar = $("li").index( $("#_'.$dayEvent->ev_id().'")  )
<----------------; ////// pues nada, aquí metí la var foobar para que me diera el index de ev_id que es la id que tenían las li en cuestión ojo al guión de delante (que esto lo aprendí aquí) .

Código HTML:
		// Call Sly on frame
		$frame.sly({
			horizontal: 2,
			itemNav: "basic",
			smart: 1,
			activateOn: "click", 
			mouseDragging: 1,
			touchDragging: 1,
			releaseSwing: 1,
			startAt: $foobar -17 ,
<-----------///////////
y aqui le pongo la var y - 17 .-¿Por Que? pues ne principio no lo savia luego me di cuenta que contaba todos los li de mi html no sabia por que y lo solucioné restando.
Aun que ahora viendo el código aquí ya veo el problema var "$foobar = $("li").index" le digo que me de en index basándose en todos los li tendría que definir también la id del objeto que contiene la lista

y así lo solucione.... Si alguien necesita algo parecido que lo haga de otra manera , seguro que es mejor.

Última edición por osobuco; 23/07/2013 a las 17:23