Eine Funktion aus einer Variable aus an ein Element binden per JQuery

Thopeto

Erfahrenes Mitglied
Hallo,

Ich hab eine Klasse erstellt, die einen Layer mit Buttons erstellt. Dabei soll man per:

Code:
dlg.setButtons({'Okay': function(event){
		alert('huhu');
  }});

Buttons hinzufügen und diese sollten eine Funktion beinhalten. die dann beim clicken ausgeführt werden soll:
Code:
for (var button in this.buttons) {
  			var bttn = $('<button></button>');
				bttn.bind('click', this.buttons[button]);
  			bttn.append(button);
  			bttnFrame.append(bttn);
  		}

aber nichts passiert beim clicken. Wenn ich this.buttons[button] mit function(event){} ersetze, funktioniert alles wunderbar. was mach ich falsch?

grüße
 
setButtons speichert den Array in eine Variable(this.buttons) ab.
this.setButtons = function(v) {
this.buttons = v;
}
 
Ich kann das nicht reproduzieren. Ich habe es mal selbst programmiert.
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html id="html" xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
	
	<title>Page title</title>

	<link href="style.css" rel="stylesheet" type="text/css" />

	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

	<script type="text/javascript">
	/* <![CDATA[ */
		$(document).ready(function(){
			var dlg = new MyClass($("#frame"));
			
			dlg.setButtons({
				'Okay': function(event){
					alert('huhu');
				},
				'Abbrechen': function(event){
					alert('foobar');
				}
			});
			
			dlg.build();
		});
		
		function MyClass(frame) {
			var bttnFrame = frame;
			
			var buttons = {};
			
			this.setButtons = function(v) {
				this.buttons = v;
			} 
			
			this.build = function() {
				for (var button in this.buttons) {
					var bttn = $('<button></button>');
					bttn.bind('click', this.buttons[button]);
					bttn.append(button);
					bttnFrame.append(bttn);
				}
			}
		}
	/* ]]> */
	</script>
</head>

<body>
	<div id="frame"></div>
</body>

</html>
 
ja der code ist auch richtig, der fehler war an einer anderen stelle so, dass er den oben geschriebenen code nicht richtig ausführen lies.

danke für deine mühe und hilfe!
 

Neue Beiträge

Zurück