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?

Reply via email to