除了转储 IE6 之外的其他建议......我无法控制 :)
我正在尝试做的快速概要:我有一个带有选择元素的表单。当用户在选择中选择特定选项(下面代码中的 id type2)时,我会显示一个包含新选择的 div 结构。我希望新的 div 结构及其子结构是现有结构 (id pdProgramDiv1) 的克隆,因为我使用 php 填充 div 中的选择。克隆选择后,我需要更改克隆的 id 和 div 的名称及其子标签并选择,因为表单信息正在传递给我的提交 php 脚本。如果它们没有唯一的 id,那么尽管它们被序列化为查询字符串,php 中的 $_POST 数组只包含给定 id 的最后一个值。
我已经包含在 Firefox sigh中完美运行的代码,并且无法更改 IE6 中的 ID 和名称。这段代码可能不像有些代码那么简洁;我对 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 中没有任何乐趣。
这是一个已知问题,或者任何人都可以告诉我如何进行更改?
如果我不能让它工作,我想我将不得不创建所有元素并隐藏它们,但这似乎不太好。
一如既往地提前感谢!
更新:已解决
非常感谢那些发现我的方式错误的人。我想发布最终解决问题的代码。正如我在对下面接受的答案的评论中所说,修复非常有意义。有点不好意思没看到,不过有时候需要一双新鲜的眼睛!唯一的变化是选择子选择而不是选择 ID,并删除 div 上的名称 attr 分配,因为如前所述,它什么都不做。
$('#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();
}
});