【发布时间】:2011-01-13 05:29:52
【问题描述】:
除了转储 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();
}
});
【问题讨论】:
-
等等你在说什么?!? IE6 中的错误?
-
感谢您修复我的代码格式。我仍然缺少一些东西。
标签: jquery internet-explorer-6 attr