Vilket barn är synligt (jQuery)

Permalänk
Medlem

Vilket barn är synligt (jQuery)

Jag har tre li-element i en ul-lista (#slider).
Ett av elementen är synligt - Kan jag få reda på vilket index den synliga li:n har?

Bör returnera 3 <ul id="listan"> <li></li> <li></li> <li style="display:none"></li> <li></li> </ul>

Visa signatur
Permalänk
Medlem

$('#listan').children(':hidden').index(); // 2

Permalänk
Medlem

Kan du inte bara loopa igenom "#listan li" (med .each() dvs), och om "$('#listan li').is(':hidden')" så gör du någonting? Å andra sidan kanske det inte fungerar att göra så om man har display: none på elementet (istället för att ha det gömt via jQuery direkt menar jag), men det känns ändå som om det skulle kunna funka.

Testa, blev lite nyfiken (och orkar inte testa själv, haha). :>

Visa signatur
Permalänk
Medlem
Skrivet av azoapes:

$('#listan').children(':hidden').index(); // 2

Fick -1 som resultat på den här...
Tänkte man skulle slippa loopa igenom listan... Känns som det borde finnas något i jQuery som löser det åt en... Man man kanske bara är lat

Visa signatur
Permalänk
Medlem
Skrivet av ketels:

Fick -1 som resultat på den här...

Då gör du något fel, för det fungerar. Beviset: Index of hidden element

EDIT
Du kanske använder jQuery 1.3.2 eller tidigare? Uppgradera till 1.4.2 så får du en bra prestandaökning. Om du är bunden till en gammal jQ-version så funkar detta istället:

var $lista = $('#lista'), i = $lista.children('li').index($lista.children('li:hidden'));

Permalänk
Medlem
Skrivet av azoapes:

Då gör du något fel, för det fungerar. Beviset: Index of hidden element

EDIT
Du kanske använder jQuery 1.3.2 eller tidigare? Uppgradera till 1.4.2 så får du en bra prestandaökning. Om du är bunden till en gammal jQ-version så funkar detta istället:

var $lista = $('#lista'), i = $lista.children('li').index($lista.children('li:hidden'));

Aha... Ni funkar det. Stämmer att jag hade 1.3.2-versionen...
Får dock lite andra lustiga fel... Men jag skapar kanske en ny tråd senare när jag har ork att ta tag i det.
Tack för visat intresse!

Visa signatur