Gå til innhold

Event observer på alle elementer i en klasse med Prototype[løst]


Anbefalte innlegg

Jeg driver og lærer meg litt Javascript, og bruker Prototype som rammeverk. Det er lett å gjøre f.eks. dette:

Event.observe('someelement','click', somefunction);

Det kaller funksjonen somefunction når elementet med id-en someelement trykkes på. Så er spørsmålet: er det mulig å gjøre det samme med klasser? Si at jeg har tre linker som alle skal fyre den samme biten javascript. Kan jeg gi dem en klasse og observere alle sammen, eller er jeg nødt til å gi dem forskjellige id-er, og opprette en Event.observe for hver av dem?

Endret av G2Petter
Lenke til kommentar
Videoannonse
Annonse

Jeg fikk det til.

Dersom dette er en dårlig måte å gjøre det på er det fint hvis noen roper ut:

 

function class_observer() {
var classlinks = $$('.class') 

var len = classlinks.length;
for (var i = 0; i<len; i++) {
	var link = classlinks[i];
	var id = link.identify(); 
	$(id).observe('click', do_stuff)
}
}

 

Forklaring på de Prototype-spesifikke funksjonene jeg bruker:

 

$$-funksjonen er Prototypes måte å finne et array med alle elementene som matcher argumentet. Kan ta flere argumenter for mer avanserte regler

 

indentify() er en funksjon som returnerer id-en til et element. Dersom elementet ikke har noen id, lager den en.

 

$(id).observe() Finner elementet med id-en fra forrige linje, og lytter etter hendelsen "click" på denne. Dersom noen klikker kaller den funksjonen do_stuff()

 

Edit: la til kommentarer

Edit: flyttet kommentarene utenfor koden. Ble rotete

Endret av G2Petter
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...