Предложения другие, что дамп IE6, что ... Я не могу это контролировать:)
Краткий обзор того, что я пытаюсь сделать: у меня есть форма с выбранными элементами. Когда пользователь выбирает конкретную опцию в select (id type2 в приведенном ниже коде), я отображаю структуру div, которая содержит новый выбор. Я хочу, чтобы новая структура div и ее дочерние элементы были клоном существующей (id pdProgramDiv1), потому что я использую php для заполнения выбора в div. После того, как select клонирован, мне нужно изменить идентификатор клона и имя div и его дочернюю метку и выбрать, потому что информация о форме передается в мой скрипт php submit. Если у них нет уникальных идентификаторов, то, хотя они и сериализуются в строку запроса, массив $ _POST в php включает только последнее значение данного идентификатора.
Я включил код, который абсолютно идеально работает в Firefox sigh и не может изменить идентификаторы и имена в IE6. Этот код может быть не таким кратким, как некоторые; Я все еще новичок в jQuery.
$('#type2').change(function() {
if ($('#type2 option:selected').text() == 'Program Director') {
$('#pdProgramDiv1').clone().attr({id: 'pdProgramDiv2', name: 'pdProgramDiv2'}).appendTo($('#type2Div'));
$('#pdProgramDiv2 > #pdProgram1').attr({id: 'pdProgram2', name: 'pdProgram2'});
$('#pdProgramDiv2 > label').attr('for', 'pdProgram2');
} else {
$('#pdProgramDiv2').hide();
}
});
Я посмотрел вокруг и попытался использовать переменные, а не цепочки, и отдельные вызовы attr вместо использования литерала объекта (или карты), но ничего не помогло. Все варианты отлично работают в FF, но не радуют в IE6.
Это известная проблема, или кто-нибудь может сказать мне, как сделать изменения?
Если я не могу заставить это работать, я думаю, мне придется создать все элементы и скрыть их, но это не так хорошо.
Заранее спасибо как всегда!
ОБНОВЛЕНИЕ: решено
Большое спасибо людям, которые нашли ошибку в моих путях. Я хотел опубликовать код, который в конечном итоге решил проблему. Как я уже сказал в своем комментарии к принятому ответу ниже, исправление имеет смысл. Немного смутившись, я этого не видел, но иногда нужна свежая пара глаз! Единственное изменение заключается в выборе дочернего элемента select, а не идентификатора select, и удалении присваивания имени attr в div, потому что, как уже упоминалось, оно ничего не делает.
$('#type2').change(function() {
if ($('#type2 option:selected').text() == 'Program Director') {
$('#pdProgramDiv1').clone()
.attr('id', 'pdProgramDiv2')
.appendTo($('#type2Div'));
$('#pdProgramDiv2 > select').attr({
id: 'pdProgram2',
name: 'pdProgram2'});
$('#pdProgramDiv2 > label').attr('for', 'pdProgram2');
} else {
$('#pdProgramDiv2').hide();
}
});