Autor Zpráva
wise
Profil
Zdravím,

jen bych potřeboval trochu popíchnout :)

Mám např. 4 divy se strukturou:

                  <div class="panel" id="panel_1">
                        <div class="ref_img">
                            <img src="./img_reference/img_reference_pict.png" alt="Refence" />
                        </div>
                      
                        <div class="ref_p">
                            <p>Pokusný text dlouhý na dva řádky a také dále</p>
                        </div>
                  </div>


a pak js kód

        $(".panel").hover(
                  function() {
                     $(".ref_p").animate({"opacity": "0.5", "height" : "toggle"}, "slow");
                  },
                  
                  function() {
                     $(".ref_p").animate({"opacity": "0", "height" : "toggle"}, "slow");
              });


jde mi o to, že chci, když najedu na konkrétní div (.panel), tak se mi zobrazí právě .ref_p v tom daném divu, na který jsem najel.
Momentální funkčnost je taková, že jakmile najedu na jakýkoliv .panel, zobrazí se všechny .ref_p

Díky :)
Chamurappi
Profil
Reaguji na wise:
$(this).find(".ref_p")
wise
Profil
Chamurappi:
Paráda :) Ten jq je supr. Díky.
Chamurappi
Profil
Reaguji na wise:
this není výmyslem jQuery.
wise
Profil
Nemluvím o this, ale o .find().

Prosím ale o další radu. Jde o to, že s jquery skoro vůbec nedělám.

Na stránce: http://envix.mair.cz/ pokud přejedete přes 4 obrázky uprostřed stránky, výsledkem je kýžený efekt. Ale co je špatně je to, že pokud přejedete rychle např. 5x po sobě nějaký nebo všechny, splní se všechny tyto přejetí a působí to divně. Je možnost to udělat nějak, aby to nedělalo?

Díky.
Chamurappi
Profil
Reaguji na wise:
Nemluvím o this, ale o .find().
Funkce $ dělá v podstatě také jen $.find, jde jen o to, v čem se hledá.

Je možnost to udělat nějak, aby to nedělalo?
Funkce animate má parametr queue, který určuje, jestli se má efekt přidat do fronty (nechápu, proč je výchozí hodnota true). Možná to bez té fronty nebude úplně ideální (nevím, také s jQuery nedělám, pokud nemusím), ale koukám, že ten web stejně neklade příliš důraz na detaily, hlavně, že je „vyjímečný“ :-)
wise
Profil
Zrovna jsem dneska napsal grafikovi, že je to špatně :P Zkusím, dám vědět.
wise
Profil
No už to vypadá, že do fronty nejde, ale zrovna ideální to není. Zase při násobném přejetí se to nějak zasekne
Chamurappi
Profil
Reaguji na wise:
Teď tam dokonce máš i syntaktickou chybu, za poslední položku ve struktuře nepatří čárka.
Vyjímka není jediný detail, který na tom webu mlátí do očí:
• Ve starších Explorerech není ten vyjížděcí text na správném místě, protože absolutně pozicuješ, ale nenastavuješ pozici.
• V Exploreru 7 a vyšším je na tom textu vypnuté vyhlazování písma.
• V Mozille ti modré nadpisy dole částečně překrývají obrázky, protože jim nesmyslně nastavuješ záporný horní margin.

Pochopil jsem správně, že se chystáš nabízet tvorbu stránek? Tak to přeci zvládneš optimálně napsat ten hover efekt sám, ne? :-)
wise
Profil
Nechápu, proč mi hodnotíš web, když jsem se tě ptal na něco úplně jiného. Ten web jsem zatím pouze nakódoval a není odladěnej ještě. Tak když chceš prosím tě radit a kritizovat, tak prosím k tématu. Díky.

A znova další věc, že nedělám v jquery.

A pochopil jsi špatně, že se chystám nabízet tvorbu stránek...tohle není web pro mě a já dělám weby už nějakej čas....

Piš prosim tě k věci.. díky... ;)
wise
Profil
Takže víš prosim tě, kde je problém s tím efektem?
Chamurappi
Profil
Reaguji na wise:
Nechápu, proč mi hodnotíš web, když jsem se tě ptal na něco úplně jiného.
Jsem čiré zlo, mám to v povaze, pardon.

A znova další věc, že nedělám v jquery.
To jsme dva.

Takže víš prosim tě, kde je problém s tím efektem?
Vím. V height: "toggle". Musíš nastavovat konkrétní výšku, protože ta, která se při togglu změří v okamžiku počátku animace, nemusí být správná. A na vyrušení fronty a zastavení stávající animace bude asi zapotřebí použít funkci stop.

Mělo by to jít nějak takhle:
$(".panel").each(function() {
  var panel = $(this);
  var text = panel.find(".ref_p");
  var vyska = text.height();
  panel.hover(
    function() {
      text.stop().animate({"opacity": 0.5, "height": vyska}, "slow");
    },
    function() {
      text.stop().animate({"opacity": 0, "height": 0}, "slow");
    }
  );
});
wise
Profil
Supr, je to mnohem lepší. Sice ještě teda při prvním hover se rovnou zobrazí, namísto, aby se použil animate, ale to zkusím vykutit.

Teď mám volno, tak jsem se chtěl pořádně vrhnout na jquery. Každopádně díky moc.

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:

0