Hi,

I've got an ASP.net repeater which has an unknown number of rows, that
I'm passing as a variable into the client-side code.  Each repeater
item has two dropdowns in it, one of which I need to attach to a
jQuery event to create a cascading dropdown.

I've put the change(function() { into a for..next loop, along with the
target control.  It's not pretty, but it seems logical.  Problem I
have is whenever the function is called, the ID of the target control
is the max value of the loop + 1.

Why is my loop variable behaving like a reference type instead of a
value type?  Why is it even in scope outside the loop?  Alternatively,
is there a better way to do this?

The code:

var rows = 4; // this is populated from the server code

for (iLoop = 0; iLoop<rows; iLoop++) {
  $('#ctl00_repCBSkills_ctl0'+iLoop+'_ddlSkillCategory_ID').change
(function() {
    PopulateSubSkill(
      'ctl00_repCBSkills_ctl0'+iLoop+'_ddlSkillSubCategory_ID',
      $('#' + this.id).val()
    );
  });
}

function PopulateSubSkill(target, var) {
  alert(target);  // always returns
'ctl00_repCBSkills_ctl05_ddlSkillSubCategory_ID' (note the 5)
}

Thanks in advance.

Duncan

Reply via email to