建議其他,傾倒IE6是...我無法控制:)IE6不改變屬性(id和名稱)與jQuery attr調用 - 任何建議?
我想要做的快速簡介:我有一個選擇元素的窗體。當用戶在select中選擇一個特定選項(下面代碼中的id type2)時,我會顯示一個包含新選擇的div結構。我想要新的div結構和它的孩子成爲現有的一個克隆(id pdProgramDiv1),因爲我使用php來填充div中的select。一旦選擇被克隆,我需要更改克隆的ID和div的名稱及其子標籤,並選擇,因爲表單信息正在傳遞給我的提交php腳本。如果它們沒有唯一的ID,那麼雖然它們被序列化爲查詢字符串,但php中的$ _POST數組只包含給定ID的最後一個值。
我已經包含了在Firefox 嘆息絕對完美的代碼,並且無法更改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();
}
});
我環顧四周,並使用變量,而不是鏈接,並呼籲個人到屬性,而不是使用對象文本(或地圖)嘗試過,但沒有什麼幫助。所有的變化在FF中運行良好,但在IE6中沒有任何喜悅。
這是一個已知的問題,或者任何人都可以告訴我如何讓更改發生?
如果我不能得到這個工作,我想我將不得不創建所有的元素並隱藏它們,但那看起來不太好。
在此先感謝!
UPDATE:解決
非常感謝中所發現的我的方法錯誤的人。我想發佈最終解決問題的代碼。正如我在下面對我接受的答案的評論中所說的那樣,該修復非常有意義。有點尷尬,我沒有看到它,但有時需要一雙新鮮的眼睛!唯一的變化是選擇子選擇而不是選擇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();
}
});
這看起來像在IE中的錯誤。 – SLaks 2010-02-04 19:08:45
等待你在說什麼?!? IE6中的BUG? – Pointy 2010-02-04 19:10:11
感謝您修復我的代碼格式。我仍然在那裏失去一些東西。 – 2010-02-04 19:52:33