если переключатель устанавливается, я хочу, чтобы отделение или показало или скрылось. вот код:
// add event to hide unimportant details when var is disabled and show when enabled
$('#companyVar' + companyVarID + 'Enabled').change(function() {
$('#companyVar' + companyVarID + 'Unimportant').fadeIn("slow");
});
$('#companyVar' + companyVarID + 'Disabled').change(function() {
$('#companyVar' + companyVarID + 'Unimportant').slideUp("slow");
});
это должно работать (я предупреждаю протестированный, что событие на самом деле работает), но я думаю что по некоторым причинам, переменная companyVarID
неизвестно в функции события. как я могу зафиксировать это?
Ну, вы не потрудились предоставить нам контекст, но есть вероятность, что вы изменяете значение companyVarID
после установки этих обработчиков событий...
Каким-то образом вам нужно сохранить это значение (а не только ссылку на переменную, которая адекватно фиксируется закрытием).
Решение Ника будет работать, и достаточно чисто, но вот альтернативная техника, просто чтобы дать вам представление о том, что происходит...
// ...something assigns a value to companyVarID
// put event-handler wireup in an anonymous function (to be called immediately)
// mask the outer variable with a parameter that can't be changed externally
(function(companyVarID)
{
// add event to hide unimportant details when var is disabled and show when enabled
$('#companyVar' + companyVarID + 'Enabled').change(function() {
$('#companyVar' + companyVarID + 'Unimportant').fadeIn("slow");
});
$('#companyVar' + companyVarID + 'Disabled').change(function() {
$('#companyVar' + companyVarID + 'Unimportant').slideUp("slow");
});
// pass the value of the outer variable to our anonymous function, allowing
// it to be captured in the event-handler closures
})(companyVarID);
// ...something changes the value of companyVarID
Вы можете немного изменить его, чтобы он основывался на ID текущего элемента, например так:
$('#companyVar' + companyVarID + 'Enabled').change(function() {
$('#' + this.id.replace('Enabled', 'Unimportant')).fadeIn("slow");
});
$('#companyVar' + companyVarID + 'Disabled').change(function() {
$('#' + this.id.replace('Disabled', 'Unimportant')).slideUp("slow");
});