webForumDet fria alternativet

.click() skickar fel id från IL

7 svar · 1 951 visningar · startad av Belenos

BelenosMedlem sedan mars 201077 inlägg
#1

Har en meny-kod:

<div id='navbox'><ul>
 <li id='0:0'><a href='#'>STARTSIDA</a></li> // Rubrik
 <li id='1:0' class='has-sub'><a href='#'>VÅRA HAMSTRAR</a><ul> // Rubrik
 <li id='1:1'><a href='#'>Julin</a></li> // Dropp down
 <li id='1:2'><a href='#'>Sussan</a></li> // Dropp down
 <li id='1:3'><a href='#'>Sana</a></li> // Dropp down
 <li id='1:4'><a href='#'>Lyra</a></li> // Dropp down
 <li id='1:5' class='last'><a href='#'>Anna</a></li> // Dropp down
 </ul></li>
 <li id='2:0' class='has-sub'><a href='#'>BLOGGAR</a><ul> // Rubrik
 <li id='2:1'><a href='#'>Hamster</a></li> // Dropp down
 <li id='2:2' class='last'><a href='#'>Energi</a></li> // Dropp down
 </ul></li>
 <li id='3:0'><a href='#'>MATERIAL</a></li> // Rubrik
 <li id='4:0' class='has-sub'><a href='#'>KONTAKT</a><ul> // Rubrik
 <li id='4:1'><a href='#'>E-brev</a></li> // Dropp down
 <li id='4:2' class='last'><a href='#'>Hitta oss</a></li> // Dropp down
 </ul></li>
 </ul></div>
</div>

och en jQuery med .click

$(document).ready(function(){
  $("li").click(function(){
    $('#center').load('load.php', { 'key[]': [this.id, "0"] }).html;
  });
});

Mitt problem är att när jag klickar på ett element i dropdown'en så skickas "ibland" data från Rubriken.

Ex. Klickar jag på "Hamser Sussan" [1:2] så får jag koden från "Våra Hamstarar" [1:0].

När jag lägger in en alert(); i jQuery-koden så startar den två gånger, en gång med rätt kod och sen en gång med fel kod!

Hur justerar jag så att koden blir rätt?

jmeMedlem sedan maj 20012 237 inlägg
#2

Vad jag läste så måste id-attributen börja med en bokstav.

"ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".")." (http://www.w3.org/TR/html4/types.html)

Dina id börjar med en siffra. Testa med att lägga till en bokstav i början, t ex "h0:0".

voigtann1Medlem sedan juni 20019 519 inlägg
#3

@jme i html5 skall det vara ok med nummer

Nate.AMedlem sedan mars 2006296 inlägg
#4

nevermind....

voigtann1Medlem sedan juni 20019 519 inlägg
#5

Det ser ut som du har glömt något i din kod .html kommer retunera en funktion men som Nate.A också skriver så bubblar eventet ner, du vill också kanske bara binda event på element som har idn:

$(document).ready(function(){
  $("li[id]").click(function(){
    $('#center').load('load.php', { 'key[]': [this.id, "0"] });
    return false;
  });
});
BelenosMedlem sedan mars 201077 inlägg
#6

Där satt den voigtann1!

Nate.A har plockat bort sitt inlägg. Vad va det som tog bort dubbla event? Var det .html, return false eller [id]?

Mycket tack!

voigtann1Medlem sedan juni 20019 519 inlägg
#7

du har en li inne i en annan li som också har click event, den går neråt i domen så:

<ul>
    <li>
        one
        <ul>
            <li>Two</li>
        </ul>
    </li>
</ul>

Om du trycker på "two" så kommer den bubbla uppåt till den andra li om du inte sätter stopp för det läs om det om event.stopPropeagation (http://api.jquery.com/event.stopPropagation/)

BelenosMedlem sedan mars 201077 inlägg
#8

OK, jag letade efter något sånt, men visste inte riktigt vad jag letade efter.
Som tur är har jag ju er här som kan förklara när det går trögt.

Tack så mycket igen!

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)