Instead of binding five times, you can do it dynamically:
$("[id^=port]").click(function() {
bigchart( this.id.charAt(this.id.length-1) );
});
Something close to that should do it. Although if you end up with 10 or
more clickables you'll have to change your naming scheme a bit.
-- Josh
----- Original Message -----
From: "timothytoe" <[EMAIL PROTECTED]>
To: "jQuery (English)" <jquery-en@googlegroups.com>
Sent: Wednesday, January 30, 2008 12:10 PM
Subject: [jQuery] Fighting a closure
I think I submitted a half-done version of this message by accident a
few minutes ago. Sorry.
This works:
$("#port0").click(function() {bigchart(0)});
$("#port1").click(function() {bigchart(1)});
$("#port2").click(function() {bigchart(2)});
$("#port3").click(function() {bigchart(3)});
$("#port4").click(function() {bigchart(4)});
I try to roll it up like this:
for (i=0;i<5;i++) {
$("#port"+i).click(function() {bigchart(i)});
}
But the closure gets me. When the function is called, i is 5 for any
of the buttons.
What is the elegant solution here?