Thomas Schmidt: Frage zur Performance bei Event Handlern

Beitrag lesen

Hallo Forum,

da ihr mir vor kurzem bei meiner Anfängerfrage zur OOP so nett geholfen habt, lade ich mal nach. ;-)

Ich hab mir einen Buttonkonstruktor gebastelt, der aus einem div mit Text und Hintergrund einen Button erzeugt.

  
  
VISU.CButtonSend = function(id, bild0, bild1) {  
    var self = this;  
    this.element = document.getElementById(id);  
    this.bildNormal = bild0;  
    this.bildBetaet = bild1;  
    this.sende = VISU.comm.test;  
  
    // Meine ersten Closures!!  
    this.buttonDown = function(){  
        self.status = 1;	  
	self.element.style.backgroundImage = "url(" + self.bildBetaet.src + ")";  
        self.sende(1);  
    };  
    this.buttonUp = function(){  
	self.status = 0;	  
	self.element.style.backgroundImage = "url(" + self.bildNormal.src + ")";  
        self.sende(0);  
    };  
  
    //Handler  
    this.element.onmousedown = this.buttonDown;  
    this.element.onmouseup = this.buttonUp;  
    this.element.onmouseout = this.buttonUp;  
  
};  
  
  
VISU.CButtonSend.erzeugeStdButton = function(id) {  
	return new VISU.CButtonSend(id, VISU.bilder.buttonStd, VISU.bilder.buttonStdPressed)  
};  
  
  
  
VISU.button = {  
	rolloPos0: VISU.CButtonSend.erzeugeStdButton('rollopos0'),  
};  
  

Das funktioniert soweit ganz gut. Nun meine Fragen:

1. Übertreibe ich es mit der OOP?

2. Ich habe gelesen, das bei Verwendung von vielen Event Handlern die Performance in die Knie geht. Ab wann wirds kritisch? Ich werde vielleicht 60-70 Buttons haben. Wäre da ein Konzept mit Event Delegation besser?

3. Wenn sich solche Buttons in einem mit "display:none" ausgeblendeten Container befinden, belasten diese die Engine dann auch?

4. Wie ist das z.B. bei jQuery? Wenn ich da eine Event z.B. allen DIV's zuweise, werden die dann alle einzeln registriert? Oder wird da mit Event Delegation gearbeitet?

Vielen Dank

Thomas