Autor Zpráva
Retentive
Profil *
Dobrý den, v jquery jsem začátečník a tvořím si svůj slider, jenže problém nastal jak chci zjistit, který element má určité id. Zjistí se mi to vždy jen při načtení stránky a tak už se to bere napořád. Potřeboval bych nějakou funkci, která se při kliknutí na jeden element zjistí, jestli má tento prvek určité id. Prostě jak můžu zjistit jestli má prvek určité id už po načtení stránky?


Retentive:
Nebo jinak, jak bych se mohl posouvat v ul li nebo v poli a zjišťovat na jaké jsem pozici v poli?
Joker
Profil
Retentive:
Prostě jak můžu zjistit jestli má prvek určité id už po načtení stránky?
Um, porovnáním?
prvek.id == "něco"
Prvek na který se kliklo pokud událost kliknutí mám jako jQuery event objekt je událost.target.

Ale obsluha událostí se obvykle dělá obráceně, místo abych zjišťoval kam se kliklo dám obsluhu kliknutí na ten prvek na který se má klikat.
Retentive
Profil *
Joker:
Rozepíšu, asi jsi mě nepochopil.:/ Tvořím slider, má tři části dvě šipky, jedná posouvá doleva a druhá doprava a já potřebuju při běhu zjistit, který prvek má určité id. Kliknu doprava a slider posune na prostřední část a přiřadí se prostřední části určité id, no a jak mohu zjišťovat které část má určité id vždy po kliknutí na nějakou šipku, tak aby se mohlo v klidu ve slideru procházet. Mi šlo zjisti vždy jen po načtení, který prvek má danné id a pak už ne. Prostě potřebuju po kliknutí na šipku znovu přeměnit proměnnou, která obsahuje, hodnotu id. Porovnávám to nějak takto:
var aktivniAlbum1 = $(".photography .poPhotography section .fotky .albumy1").attr("id");
if (aktivniAlbum1 == "aktivniAlbumy")
   {
       $(".photography .poPhotography section .fotky .rozhrani1").click(function() {       
            $(".photography .poPhotography section .tlacitka li, .photography .poPhotography section .fotky ul, .photography .poPhotography section .fotky ol").removeAttr('id');
            $(".photography .poPhotography section .tlacitka li:nth-child(3)").attr('id', 'aktivniAlbum');
            $(".photography .poPhotography section .fotky .albumy3").attr('id', 'aktivniAlbumy').animate({opacity: 1}, 500);
            $(".photography .poPhotography section .fotky .popisAlbumy3").attr('id', 'aktivniPopisAlbumy').animate({opacity: 1}, 500);
            $(".photography .poPhotography section .fotky .albumy1, .photography .poPhotography section .fotky .albumy2, .photography .poPhotography section .fotky .popisAlbumy1, .photography .poPhotography section .fotky .popisAlbumy2").animate({opacity: 0}, 500);
            setTimeout(function(){
                $(".photography .poPhotography section .fotky .albumy1, .photography .poPhotography section .fotky .albumy2, .photography .poPhotography section .fotky .popisAlbumy1, .photography .poPhotography section .fotky .popisAlbumy2").attr('id', 'neaktivniAlbum');
            }, 500);
       });
       
       $(".photography .poPhotography section .fotky .rozhrani2").click(function() {        
            $(".photography .poPhotography section .tlacitka li, .photography .poPhotography section .fotky ul, .photography .poPhotography section .fotky ol").removeAttr('id');
            $(".photography .poPhotography section .tlacitka li:nth-child(2)").attr('id', 'aktivniAlbum');
            $(".photography .poPhotography section .fotky .albumy2").attr('id', 'aktivniAlbumy').animate({opacity: 1}, 500);
            $(".photography .poPhotography section .fotky .popisAlbumy2").attr('id', 'aktivniPopisAlbumy').animate({opacity: 1}, 500);
            $(".photography .poPhotography section .fotky .albumy1, .photography .poPhotography section .fotky .albumy3, .photography .poPhotography section .fotky .popisAlbumy1, .photography .poPhotography section .fotky .popisAlbumy3").animate({opacity: 0}, 500);
            setTimeout(function(){
                $(".photography .poPhotography section .fotky .albumy1, .photography .poPhotography section .fotky .albumy3, .photography .poPhotography section .fotky .popisAlbumy1, .photography .poPhotography section .fotky .popisAlbumy3").attr('id', 'neaktivniAlbum');
            }, 500);
       });          
   }
A po události click potřebuji znovu přenačíst id .photography .poPhotography section .fotky .albumy1.
scheras
Profil *
Co to dát do funkce, která se vyvolá při kliknutí na prvek?
Retentive
Profil *
scheras:
Ukážeš mi trochu jak? Potřebuju nakopnout. Já už jsem magor, programuju od rána a ještě vzhledem k mým zkušenostem...
scheras
Profil *
tak jen takový pseudokód:
$( prvek ).click( function() {
    if ( $( this ).attr( "id" ) === "aktivniAlbum" ) {
        //udělej všechno co je potřeba
    }
});
Retentive
Profil *
scheras:
Jestli jsem to správně pochopil, vytvořím funkci, při klinutí na dannou šipku. Zjistím, která ze tří sekcí má id aktivniAlbum a tak která toto id bude mít, tak vykonám kód. A takhle se to bude dít stále dokola při kliknutí na dannou šipku, že? Jestli ano, tak díky moc.
quatzael
Profil
Retentive:
člověče Ty se teda vyjadřuješ.. četls to po sobě? Vždyť ty Tvoje věty nemají hlavu a patu. Jak tady mají lidé poznat co opravdu potřebuješ.
Jestli Ti nepomohly tady ty výše zmíněné rady, tak zkus trochu srozumitelněji popsat, co se snažíš vyřešit.
Pochopil jsem, že asi chceš zjistit, jaký slide je zrovna aktivní. Funguje Ti to teda?
Joker
Profil
Retentive:
Z kódu v [#3] začínám chápat podstatu problému. Chaos v IDčkách vzniká proto, že se přehazují z prvku na prvek. To není dobrý nápad.
V tom kódu je to vlastně obráceně, než je běžné: Předpokládám „albumy3“ a „popisAlbumy3“ jsou jednoznačné identifikátory těch bloků, ale jsou udělané jako CSS třídy. A štítek aktivního prvku, který se běžně dělá jako CSS třída, je jako id.

scheras:
 $( this ).attr( "id" )
To je zbytečně dlouhá objížďka pro this.id.
scheras
Profil *
Joker:
$( this ).attr( "id" )
To je zbytečně dlouhá objížďka pro this.id.

Díky za poznámku.

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: