Autor Zpráva
maks
Profil
Ahoj,

jsem věčný začátečník s JS, ale řekl jsem si, že když už se něco naučit, začnu na nějakém frameworku, konkrétně jQuery. Nevím, zda je to dobře či nikoliv, ale to je jiná věc.

Otázka tedy zní. Když mám následující kód
$("div#popup").hide(1000);
, popup se mi skryje. Já bych ale potřeboval, aby nějaký čas (třeba 5s) zůstal a až pak se začal schovávat.

Nevím, jak toto pojmenovat a v tutoriálech, kde jsou základy (s kterými prozatím pracuji), jsem toto nenašel.


Děkuji za radu.
Maks
Nox
Profil
setTimeout()
Radek9
Profil
maks:
Přesněji tedy:
setTimeout(function(){
  $("div#popup").hide(1000);
}, 5000);
maks
Profil
Radek9:
Přesněji tedy: ...
děkuji, to jsem si už dohledal.

Nox:
tušil jsem něco takového, spíše jsem nevěděl, jak to zapsat. S přesným názvem už to byla hračka (mohlo mi to taky dojít z "běžného" JS, setTimeout znám.. :-()

Děkuji.
ah01
Profil
Zajímá vás jak to udělat elegantně po jQueryovsku?

Pokud přidáte nějakému jQ. objektu efekt (např. zmíněný hide), efekt se přidá do fronty. Proto když přidáme naráz více efektů, tak se vykonávají postupně (ukázka).

S tuto frontou můžeme pracovat pomocí metod queue a dequeue. Můžeme si třeba napsat takový to plugin:

// plugin pro delay (zpoždění)
$.fn.delay = function (time){  
  var that = this;
  return this.queue(function(){
    setTimeout(function(){ that.dequeue(); }, time);
  });
};
Tento kus kódu nedělá nic jiného, než že jQuery rozšíří o metodu delay, která přidá do fronty efektů zpoždění, dlouhé daný počet ms.

Odpověď na původní dotaz by pak vypadala tato:

$("div#popup").delay(5000).hide(1000);

Hezké, ne? (ukázka)




Poznámka: metoda delay (dokumentace) bude přímo součást jQuery 1.4, které by mělo být oficiálně uvolněno 14. 1. 2010.

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: