2011-01-09 2 views
0

Zum Beispiel habe ich lange Liste der Tasten: <input type=button name=clickbutton onclick='dosomething(this)'>Wie kann ich Eingabeknöpfe mit dem angegebenen Namen ansehen?

Aber anstatt Aufruf der gleichen funcion in jeder Taste der Umsetzung wäre es vernünftig zu sein, ein einziges Hören Ereignis hinzuzufügen, die für Klick auf diese Schaltfläche mit diesem Namen warten würden . Aber wieder, es gibt viele Tasten, also muss ich das angeklickte Objekt an eine Funktion übergeben. Zum Beispiel muss diese Funktion ein Textfeld, das benachbart zu dieser Schaltfläche ist (nextSibling), aktualisieren.

Antwort

1

Ereignisdelegierung nachschlagen. Dies kann sein, was Sie brauchen. Es gibt viele gute Ressourcen dafür auf Google.

Update: Sorry, ich ein wenig mehr Aufwand in die Antwort gesetzt haben könnten, sind hier einige Ergebnisse Google Search...

Sie würden dann einen Schalter verwenden, um zu bestimmen, welche Aktion Sie basierend auf dem Ereignis nehmen wollen .name-Attribut Das Tolle an dieser Herangehensweise ist, dass wenn Sie eine Menge Elemente auf der Seite mit Ereignissen haben, es so klingt wie Sie es tun, es sollte Ihre Seite feundlicher reagieren lassen; Der Browser muss sich nicht mit dem zusätzlichen Overhead eines on-Ereignisses pro Element befassen.

1
var buttons = document.getElementsByName('clickbutton'); 
for (var i = 0; i < buttons.length; i++) 
    buttons[i].onclick = function(){ 
     this.nextSibling.innerHTML = 'clicked!'; 
    } 
3

könnten Sie jQuery verwenden:

$('input[name|="clickbutton"]').click(function() { 

    var currentButton = $(this); 
    alert(currentButton.attr('id')); 

}); 

Dies legt eine Klickfunktion für alle Eingabeelemente mit dem Namen ‚Click‘. currentButton ist das Eingabeelement, auf das gerade geklickt wurde. Die Funktion alarmiert dann die ID der currentButton.

UPDATE: Ich habe ein funktionierendes Beispiel für Sie hier erstellt: http://jsfiddle.net/Damien_at_SF/cdsWk/1/

Hoffnung, das hilft :)

Verwandte Themen