I have a series of divs in a pattern of header/body, where a click on the header will show the body in question.
This all happens with .click initialized on page ready..
It's a JavaScript thing; it's not jQuery related. What you're doing is creating a closure, but you're not understanding properly how they work.
You might want to read up on http://blog.morrisjohns.com/javascript_closures_for_dummies, especially Examples 5, 6, and 7.
Yes, I have run into this problem all too often. Area
is a global variable since it does not have var
before it. Also, don't use a for...in construct.
But you might still run into a similar problem. God knows how many scripts I've debugged because of a similar bug. Doing the following guarantees proper scoping:
var Areas = ['ping','http', 'smtp', 'pop3'];
for( var i = 0; i < Areas.length; i++ ){
(function(area) {
$(area).click(function(){ alert(area); /* ShowArea(area); */ });
})(Areas[i]);
}