Autor Zpráva
JaySee
Profil
Ahoj,

píšu sem (z mého pohledu primitivní dotaz), ale zasekl jsem se na tomhle už 6 hodin...

Mám zanořenější strukturu nečíslovaných seznamů ul > li v nichž jsou odkazy. Já znám URI odkazu a na základě něj se potřebuji dostat k <li> které ho obaluje a posunout ho nahoru v seznamu.

Zkoušel jsem především konstrukce jako tato:

$("li a[href]:contains('/homepage/')").each(function(){

$(this).parent("li:first").prepend("AHOJ");

});

Tyhle konstrukce ted píšu z hlavy, ale pointa je v tom, že se mi nikdy nezpracoval callback u each funkce, takže zbytek jsem nezkoušel. Pro to, abych se dostal do callbacku u each() jsem zkoušel upravovat všelijak definici prvku, nad kterým to má provádět... ale naprosto marně.

Takže ještě jednou polopaticky čeho se snažím dosáhnout.
Na základě URI nalézt prvek v seznamu a na jeho úrovni zanoření ho posunout na první pozici.

Ještě přidám k ukázce kus toho seznamu.
<ul>
  <li><a href="/pojistky/">pojistky</a></li>
  <li><a href="/hracky/">hracky</a></li>
  <li>
        <a href="/pismenka/">pismenka</a>
        <ul>
              <li>
                    <a href="/ttt/">TTT</a>
                    <ul>
                          <li><a href="/dc/">dc</a></li>
                          <li><a href="/ab/">ab</a></li>
                          <li><strong>SELECTED</strong></li>
                   
                   </ul>
             </li>
        </ul>
   </li> 
</ul>
Chamurappi
Profil
Reaguji na JaySee:
Funkce parent je blbě nazvaná, podle argumentu neprohledává postupně všechny předky, ale jen testuje, jestli rodič vyhovuje selektoru. Potřebuješ asi spíš closest.
JaySee
Profil
Chamurappi:
Díka za upřesnění s parent, ale pořád přetrvává moje potíž se vůbec dostat do callbacku funkce each. Nechápu proč. A jsem už z toho hodně frustrovanej :-(
JaySee
Profil
Chamurappi:
Ahoj Chamurappi, tak jsem to překopal pomocí té funkce closest a šlape to parádně. Ještě jsem místo selektoru :contains použil hledání hodnoty v atributu.
Takže nakonec má funkce vypadá následovně:
ofx.reorder = function ()
{
                
for(var i = ofx.structure.length -1; i >= 1; i--)
{
                             
     var x = ofx.structure[i].level;
     var y = ofx.structure[i].uri;
                     
     $('#leftMenu li a[href="'+y+'"]').each(function(){
                                                    
     $(this).closest('ul').attr("id","myfather"+x);

     var temp = $(this).closest('li');
                      
     $("#myfather"+x).prepend(temp);
                      
                        
    });
 }
}
Takže díky :-D

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: