Mootools: Index-Abfrage von akt. Element bei onClick

tantebootsy

Erfahrenes Mitglied
Hi,

ich möchte den Index des Elements, auf das gerade geklickt wurde abfragen. Diese versuche ich über folgende Weise:

PHP:
  var allToggler = $$('input.v_toggle');
  var allTogglerCount = allToggler.length;
  
  allToggler.each(function(item, index){
    alert('Index ohne Klick: '+index);
    
    item.addEvent('click', function(){
        alert('Index bei Klick: '+index);
    });
    
  });

Ich erstelle also ein Array von allen input-Tags mit der Klasse "v_toggle". Auf jedes Element wird die Funktion each angewendet, die einfach nur den Index des aktuellen Elements ausgibt. Wenn ich dies jedoch mit onclick verbinde gibt er mir immer den Index 0 aus. Wie kann ich immer den Index des aktuellen Elements ausgeben?

Wäre klasse, wenn mir jemand weiterhelfen könnte. :)

Micha
 
Zuletzt bearbeitet:
Ich glaube ich habe das Problem nun direkt nach dem Posting entdeckt + dieses ist nur im Zusammenhang mit dem HTML verstehbar:

http://transfer.mb-neuemedien.de/foren/indexabfrage/ -> es geht um die Radiobuttons mit dem Label "Sub".

Der Index sollte abgefragt werden beim Klick auf den Radiobutton. Ich habe bisher jedoch immer auf das zugehörige Label geklickt + das wurde von JS wohl auch als Klick auf den Button gewertet - wobei er dann den Index 0 ausgibt, egal welches Element im Array man anwählte. Klickt man jedoch direkt auf den Radiobutton gibt er den richtigen Index des aktuell angeklickten Elements aus. Ein Bug?

VG,
Micha
 
Hi,

wirklich ein eigenartiges Phänomen.

Abhilfe könntest du schaffen, indem du die betreffenden Elemente in DIV-Container setzt. Nun kannst du dich vom Radio-Button aus zum betreffenden Label-Element hangeln und dessen Event überschreiben.

HTML:
Code:
<div><input type="radio" name="context" value="Praktikum oder Ausbildungsabschnitt" id="context_praktikum" class="v_toggle" /><label for="context_praktikum" class="dada">Sub</label><br /></div>
JS:
Code:
window.addEvent('domready', function() {
  var allToggler = $$('input.v_toggle');
  var allTogglerCount = allToggler.length;

  allToggler.each(function(item, index){
    //alert('Index ohne Klick: '+index);

    item.addEvent('click', function(){
    	item.checked = true;
      alert('Index bei Klick: '+index);
    });

    item.parentNode.getElementsByTagName("label")[0].onclick = function(){
      item.fireEvent('click');
      return false;
    };
  });

});
Vielleicht kannst du damit etwas anfangen.

Ciao
Quaese
 
Hi,

wirklich ein eigenartiges Phänomen.

Hi Quaese,

so eigenartig ist das Phänomen gar nicht. Habe gerade mit den Jungs von Mootools gesprochen die mich auf meine gedoppelten IDs aufmerksam gemacht haben. Nachdem ich wirklich unique IDs in meinem Doc geschaffen habe funktionierte es nun auch mit einem Klick auf das Label. :)

Trotz allem interesant, dass ein Klick auf das Label von JS als Klick auf den Radio-Button selbst gewertet wird ...

Vielen Dank noch für dein Beispielcode, kann mir evtl. noch nützlich sein!

VG,
Micha
 

Neue Beiträge

Zurück