Autor Zpráva
doby
Profil *
Dobrý den,

chci se zeptat, jak mohu v jQuery nastavit opakování děje. Mám tento kód...

více si můžete prohlídnout zde jsfiddle.net/2x3ga93x

open a close funguje, ale po každý musím sjet kurzorem z textu "Menu".

děkuji za reakce.
Slark
Profil *
To je způsobeno tím, že máte celý script obalený v jQuery(".menu-button").on("mouseover", function(check)
anonymníí
Profil *
doby:
Děláš to celé nějak složitě. Když na tlačítko klikám, je jasné, že na něm jsem myší.

Zkus to jednodušeji, třeba takto:

jQuery(".menu-button").click(function() {
    var mobileMenu = jQuery("#main-menu-mobile"); 
  
  if (mobileMenu.hasClass('active')) {
      mobileMenu.removeClass('active').addClass('inactive');
  } else {
      mobileMenu.addClass('active').removeClass('inactive');
  }
});
https://jsfiddle.net/2x3ga93x/1/


Odkaz se mi nezodkazil, jsfiddle.net/2x3ga93x/1
doby
Profil *
funguje to skvěle :) jsem v jQuery začátečník a tohle řešení mě fakt nenapadlo... :) a když budu chtít vložit .animate, aby mi to postupně vyjíždělo a zajíždělo...jaký tam je vztah jQuery s před nestaveným css?
anonymníí
Profil *
doby:
Není problém si s animate trochu pohrát. Takto nabyté kušenosti a znalosti si později, až je budeš potřebovat znovu, snáze vybavíš, než když ti teď vše řekneme. Pokud budeš mít a animací nějaký konkrétní problém, zeptej se na něj.
doby
Profil *
Jestli dobře chápu princip .animate, tak animace bude probíhat vždy pomocí tzv. přímého stylu u daného objektu. Např. <div id="main-menu-mobile" class="active" style="width: 300px"> je možnost, aby animace se vykonávala podle externího stylu?
anonymníí
Profil *
doby:
je možnost, aby animace se vykonávala podle externího stylu?
Ne, už je z principu, jak JS animace funguje. V každém časovém úseku daného intervalu (pokud nastavíš interval 300ms, provede se X animací v časových rozestupech 300/x) se nastaví vypočtená šířka animovanému elementu. V průběhu celého intervalu (300ms) se změní šířka elementu Xkrát. Jak bys ji chtěl měnit externím stylopisem?

Můžeš po doběhnutí animace přidat třídu, která bude v externím CSS souboru obsahovat oněch 300px (koncový stav animace) a inline styl z prvku odebrat. Samotná JS animace však probíhá vždy formou inline stylu, jinak to technicky ani nejde. Tedy, jde. Mít definovaných X tříd (sirka1/sirka2/sirka3...sirka300) se width: 1px/2px/3px...300px a setIntervalem měnit postupně třídu. Sám asi vidíš, že to je pakárna a na úpravu nic moc.
doby
Profil *
Je toto řešení správné, nebo vás napadá jak to udělat jednodušeji?

jsfiddle.net/83m5c5yu

Děkuji za reakci.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: