MozillaPL.org - polskie centrum Mozilli

Główne menu:

[java script] Rozwijane menu

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

[java script] Rozwijane menu

Postautor: niezabitowski » 27 maja 2010, 17:27

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3

Witam
Chcę przerobić moduł do joomla 1.5 tak, by menu rozwijało się nie po najechaniu na pozycję a dopiero po kliknięciu na nią. Jedyne co sam wykombinowałem to to, że rozwija się po kliknięciu ale od razu ładuje mi to co jest pod kursorem, czyli klikam raz a odczytuje to tak, jakbym kliknął dwa razy. -Pierwsze mouseenter zamieniłem na onclick
Bardzo proszę o pomoc


// save the old jquery "hover" method
$.fn._hover = $.fn.hover;

// jquery method
$.fn.hover = function( fn1, fn2, fn3 ) {
if ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args
if ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args
return !fn1 ? this.trigger('hover') // 0 args
: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args
};

// special event configuration
var hover = $.event.special.hover = {
delay: 100, // milliseconds
speed: 100, // pixels per second
setup: function( data ){
data = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );
$.event.add( this, "mouseenter mouseleave", hoverHandler, data );
},
teardown: function(){
$.event.remove( this, "mouseenter mouseleave", hoverHandler );
}
};

// shared event handler
function hoverHandler( event ){
var data = event.data || event;
switch ( event.type ){
case 'mouseenter': // mouseover
data.dist2 = 0; // init mouse distance˛
data.event = event; // store the event
event.type = "hoverstart"; // hijack event
if ( $.event.handle.call( this, event )!==false ){ // handle "hoverstart"
data.elem = this; // ref to the current element
$.event.add( this, "mousemove", hoverHandler, data ); // track the mouse
data.timer = setTimeout( compare, data.delay ); // start async compare
}
break;
case 'mousemove': // track the event, mouse distance˛ = x˛ + y˛
data.dist2 += Math.pow( event.pageX-data.event.pageX, 2 )
+ Math.pow( event.pageY-data.event.pageY, 2 );
data.event = event; // store current event
break;
case 'mouseleave': // mouseout
clearTimeout( data.timer ); // uncompare
if ( data.hovered ){
event.type = "hoverend"; // hijack event
$.event.handle.call( this, event ); // handle "hoverend"
data.hovered--; // reset flag
}
else $.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
break;
default: // timeout compare // distance˛ = x˛ + y˛ = ( speed * time )˛
if ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable
$.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
data.hovered++; // flag for "hoverend"
data.event.type = "hover"; // hijack event
if ( $.event.handle.call( data.elem, data.event ) === false ) // handle "hover"
data.hovered--; // flag for "hoverend"
}
else data.timer = setTimeout( compare, data.delay ); // async recurse
data.dist2 = 0; // reset distance˛ for next compare
break;
}
function compare(){ hoverHandler( data ); }; // timeout/recursive function
};

/*******************************************************************************************/
})(jQuery); // confine scope
niezabitowski
 

Odp: [java script] Rozwijane menu

Postautor: Mirek » 27 maja 2010, 22:44

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9

jQuery nie jest (jeszcze) moją specjalnością - ale jeśli dasz linka do działającej strony, to może zerknę, co należałoby przerobić.
Mirek
Moderator
 
Posty: 2156
Z nami od: 09 sierpnia 2007, 20:37

Odp: [java script] Rozwijane menu

Postautor: Mateusz SSJ8 » 13 lipca 2010, 14:22

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6

Javascript niemusowy. Rozwijane Menu można też w HTML (element DIV) przy pomocy CSS (opisać div konkretnej klasy, np. "div.menu:hover {styl menu}") na kurshtml.boo.pl znajdziesz to, czego szukasz.
Mateusz SSJ8
 


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: Bing [Bot], dexter, Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: