webForumDet fria alternativet

.click() skickar fel id från IL

JavaScriptur Javascript

7 svar · 1 951 visningar · startad av Belenos

Medlem sedan mars 201077 inlägg
Frågan#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?

Medlem 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".

Medlem sedan juni 20019 519 inlägg
#3

@jme i html5 skall det vara ok med nummer

Medlem sedan mars 2006296 inlägg
#4

nevermind....

Medlem 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;
  });
});
Medlem 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!

Medlem 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/)

Medlem 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!

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