Autor Zpráva
kuba123
Profil *
Nevím si rady s tímto. Jak v rámci funkce vymazat ty elementy, které jsou tučně? $(this) obsahuje odkaz na

<div id="Q_0" class="clear" name="key_31">


<div id="Q_0" class="clear" name="key_31">
<div class="Q">
<p class="top">
<span></span>
</p>
<p class="top">
<b>Nadpis</b>
<br>
</p>

</div>
<div class="A">
text
</div>
</div>


metodu empty znám, ale pomocí $(this).children() dostávám všechny vnořené elementy a já chci smazat jednak ten zanořený následující div a taky zanořený následující p umístěný pod první div


Uvnitř

<div id="Q_0" class="clear" name="key_31">
</div>

má zůstat

<div class="Q">
<p class="top">
<span></span>
</p> 
</div> 

v rámci dokumentu html


Měním zadání.

Umím vymazat obsah spanů:
$(this).find("span").empty();

ale potřebuji odstranit vše od prvního potomka (tj. první span) až po předposledního potomka (který je input).
Camo
Profil
kuba123:
Ak poznáš tie elementy, ktoré chceš zmazať, tak tak ich priamo zmaž. Ak ich presne nepoznáš tak by som to urobil, tak, že by som si do nejakej premennej pozbieral tie elementy, čo majú zostať, a ten div v ktorom to celé je, by som proste prepísal. To bude asi rýchlejšie ako sa prehrabávať v tom sene...
Ale najjednoduchšie by bolo, keby si tým elementom, ktoré majú byť na odstrel, dal vopred nejakú triedu podľa ktorej ich nájdeš, keď ich budeš chcieť zmazať.
marcus33cz
Profil
Ještě existují metody remove() a hide(), které by možná byly vhodnější. Pokud jsou ty třídy (class A a top) fixní, tak je vyhledej přímo, jak píše Camo.
kuba123
Profil *
Zjednodušil jsem to tak, že jsem odstranil ten první odstavce se spanem a span jsem přesunul do druhého odstavce. Druhý odstavec nechám. V kódu pak umísťuji do toho spanu text:
target.children("div.Q").children("p.top").children("span").empty().append("OK").removeClass(\'span_incorrect\').addClass(\'span_right\');

Odstavec .A odstraňuji v rámci animace takto:
    parent.animate({height: "0"},2000).queue(
              function() { $(this).children("div.A").remove(); }
              );



Nicméně mám ještě dotaz. S tou animací mám problém, že funguje pouze jednou a pak už ne. O co mi jde. Dělám dotazník ve kterém se jednotlivé otázky mají postupně rozbalit (ukázat) a po odsouhlasení zase zabalit (schovat). Když tedy kliknu na tlačítko OK které je pod div .A, tak se odpovědi i to tlačítko odstraní a pak se má vybalit další otázka. Nicméně ta animace toho odstraňování mi funguje jen jednou. Tzn. část

parent.animate({height: "0"},2000).queue(
          function() { 
              console.log(target);
              console.log(target.children("div.A"));
              target.children("div.A").remove(); 
          }
);

se poprvé spustí a pak se vynechává. Je tu někdo kdo rozumí jak ty animace a .queue() funguje nebo čím by to mohlo být?
kuba123
Profil *
Výše uvedený problém je už vyřešen. Nicméně, co mě dneska udivilo, v rámci scriptu pro vyhodnocování správných a nesprávných odpovědí, byl tento kód:

answers["valued"][s] = ( that.value == s) ? 1 : 0;
či-li: zapiš jestli byla odpověď správná nebo ne

A pak cyklus pro zjištění celkového počtu odpovědí
    var c = 0;
    for ( var i in answers["valued"] ) {
      c++;
      if (answers["valued"][i] == 1 ) 
        sum++;      
      }

Dejme tomu, že odpovím 5 otázek správně a 1 špatně. Cyklus for je aplikován na pouhých 5 otázek a špatné ignoruje, čímž výsledek je 5 odpovědí celkem a z toho vyplývá nula chyb (jak dále počítá skript).

Nu problém jsem vyřešil po opravě:

answers["valued"][s] = ( that.value == s) ? 1 : 2;
Kde 1 je správná odpověď a 2 je špatná.

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: