On Jan 30, 2008, at 3:10 PM, timothytoe wrote:


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?

If you can assign class="port" to each of those elements, you could do this:

$('.port').each(function(index) {
        $(this).click(function() {bigchart(index)});
}

if you can't assign a class, then change $('.port') to $ ('[id^=port]') , as Josh suggested.


--Karl
_________________
Karl Swedberg
www.englishrules.com
www.learningjquery.com

Reply via email to