Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/09/2008, 04:06
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Jquery y evento toggle()

marcopoloaz06, le veo un par de problemas a tu solución. Una es lo de usar eval, que sería muy conveniente evitarlo. La otra -más grave- es que con eso, además haces saltar el evento click. Así que si hubiéramos asociado una función al evento click, esta saltaría con sólo hacer mouseover.

Personalmente no tengo del todo claro por qué mafima quiere hacer eso, o quizá no veo claro qué es exactamente lo que quiere hacer. De todos modos, si simplemente se trata de duplicar toggle para que salte en onmouseover, creo que sería mejor tomar directamente el código de toggle de los fuentes de jQuery y usar eso como base. Yo desde luego no creo que pueda hacer por mi propia cuenta un código tan bueno como este:

Código:
$.fn.toggleOver = function( fn ) {
	var args = arguments, i = 1;
	while( i < args.length )
		jQuery.event.proxy( fn, args[i++] );

	return this.mouseover( jQuery.event.proxy( fn, function(event) {
		this.lastToggle = ( this.lastToggle || 0 ) % i;
		event.preventDefault();
		return args[ this.lastToggle++ ].apply( this, arguments ) || false;
	}));
}
Y se usaría igual que se usa el toggle original:
Código:
$(document).ready(function(){

    $("#DIV").toggleOver(
            function(){
                alert("1");
            },function(){
                alert("2");
            },function(){
                alert("3");
            },function(){
                alert("4");
            }
    );
    // Añadimos este para que se vea que no interfiere con el evento click
    $("#DIV").click(function(){alert("hola");});
});