jQuery problem

Programovacie jazyky, rady, poradňa...
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

jQuery problem

Príspevok od používateľa sINN3R »

Zdravim,
Chcel by som sa spytat ci existuje v jQuery prikaz ktorym sa da zistit ci na danom objekte prebieha urcita funkcia, pretoze riesim problem kde po prejdeni nad urcitu plochu sa mi zobrazi obrazok no ked rychlo nad tou plochou prejdem 10x tak sa mi tam funkcia "mouseover" zretazi a ono mi to ako keby dobieha a stale ukazuje a schovava ten obrazok aj ked uz nad tou plochou mys nemam. Preto som rozmyslal ci nieje mozne to spravit tak aby sa nedala spustit znova ta funkcia mouseover na danom objekte predtym nez sa skonci ta aktualna.
Diky za rady
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa audiotrack »

takéto niečo si skúšal?

Kód: Vybrať všetko

var foo = true;
.
.
.
if(foo) {
   foo = !foo;
   $('#Div1').slideDown('fast', function(){foo = !foo});
}
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa sINN3R »

Skusil som to teraz ale moc mi to nefungovalo :( ale diky za radu.
Takto vyzera ten kusok kodu co hybe na hover:

Kód: Vybrať všetko

      $j(".projectList li h3 a").hover(			
			function () {
				$j(this).animate({backgroundPosition: "-8px center"} ,0);													   
				$j(this).animate({paddingLeft: "8px", backgroundPosition: "0px center"} ,200);
			},
			function () {
				$j(this).animate({backgroundPosition: "-8px center", paddingLeft: "0px"} ,200);
			}
		);
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa audiotrack »

no veď to daj celé do podmienky ako som ti ukázal. Máš nejakú globálnu premennú, nastavenú najprv na true. Vykonávaš to celé iba ak je true, a na začiatku ju nastavíš na false, na konci na true. S jQuery moc nerobím, ja som skôr prototype a scriptaculous verný ale určite majú aj animate nejaké návratové funkcie ako slidDown a podobne. Druho možnosťou by bolo sa trochu pohrať s tými bindami čo som našiel v api ale nechcelo sa mi to celé čítať :) možno by sa aj tam našlo niečo čo ti pomôže
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa sINN3R »

Dal som to takto a nechapem preco sa to vykonva dalej ked tam nikde neni nastavene $hover na true asi pojdem na tie bindy na ktore som sa uz pozeral a chcel som sa im tak moc vyhnut :-D

Kód: Vybrať všetko

if ($hover === undefined) {
		var $hover = true;
	}

	if ($hover == true) {
		$hover = false;
		$j(".projectList li h3 a").hover(						
			function () {
				$j(this).animate({backgroundPosition: "-8px center"} ,0);													   
				$j(this).animate({paddingLeft: "8px", backgroundPosition: "0px center"} ,200);
			},
			function () {
				$j(this).animate({backgroundPosition: "-8px center", paddingLeft: "0px"} ,2000);
			}
		);
	}
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: jQuery problem

Príspevok od používateľa chrono »

Keď niečo animuješ (a hlavne, ako to je to ako obsluha udalosti hover, alebo niečoho iného, čo sa môže opakovať skôr, ako sa tá animácia skončí), tak najskôr použi aj stop a teda niečo ako:

Kód: Vybrať všetko

$j(this).stop().animate({backgroundPosition: "-8px center"}, 0);
--==[ RA ]==--
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 841
Registrovaný: 03 mar 2006, 18:07
Bydlisko: Kosice
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa --==[ RA ]==-- »

Na zastavenie cinnsoti nejakeho efektu sluzi funkcia stop(); tak ako hovori chrono
Pri kazdom zaciatku efektu najprv zavolaj

Kód: Vybrať všetko

$(this).stop();
a nasledne vykonaj efekt.
To sposobi ze hocico co je vykonavane na danom objekte (this) sa zastavi.
Info:
http://docs.jquery.com/Effects/stop
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa audiotrack »

to ale zastaví efekt a nenechá ho dobehnúť do konca. Ja som to pochopil trošku inač, že efekt dobehne, ale nespustí sa znova (znova sa sputiť môže až keď kompletne skončil)
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Re: jQuery problem

Príspevok od používateľa sINN3R »

ja by som ale potreboval aby sa mi pocas vykonavania eventu nenabalovali dalsie hover eventy ale aby sa ignorovali do doby kym neskonci aktualny hover na danom elemente
Napísať odpoveď