2011-12-01 36 views
1

源代碼在:http://jsfiddle.net/lski/4aTm5/JQuery 1.7.1'冒泡'事件IE8及以下版本無法處理動態刪除錯誤?

我已成功地在Firefox,Chrome和IE9中獲得上述代碼,但未在IE8及更低版本中獲得。

我想要的是什麼:

爲了讓用戶填寫在具有相同名稱的多個選擇框的能力,在新行各出現。只有第一個選擇是強制性的,第二個選擇是可選的。

我希望至少顯示第二個框,並在必要時動態添加新行(使用新的下拉菜單)。新行將有一個空白選擇,然後如果用戶從該列表中選擇一個新行,並且新的下拉列被添加到底部。如果用戶選擇不具有特定的選項,他們將其設置爲空白,並將該行刪除。

的問題,我認爲香港專業教育學院發現:

我有這一切工作,如通過上面的鏈接,在Firefox,Chrome和IE9,但不會在IE8正常工作及以下,對動態創建的選擇時, 。我認爲這是因爲在IE8和以下版本中添加模擬這種行爲的冒泡代碼不會被添加到動態添加的選擇中,因此委派的事件處理程序不會選擇它們。

有沒有其他人有這個問題?或者它是我的代碼?如果它的問題我會發佈一個錯誤報告,但想先檢查是否是我。

謝謝你在前進, 李

+0

解決類似的問題,不知道它是否有幫助,但它在瀏覽器模式下工作:IE 8,文檔模式:IE 8標準。祝你好運 ...將保持更新:) –

+0

@Jan我無法得到它在IE8(Win7)中的標準(我沒有選中compat)作爲集合中的第三個盒子(第一個是動態創建的)不能自行刪除或添加第四個框。我很高興你的工作雖然;) – Lski

回答

0

最後我提交了一個錯誤報告,但是有人也毆打了我;)但是以爲我會重新放置在這裏,以防有類似問題的人在這個問題上失敗。

這個問題已被jQuery團隊識別,顯然正在審查jQuery 1.7.2需要這些功能的人。

我通過分離處理函數並附加爲每個克隆上的直接處理程序來解決此問題,這對我而言非常有用。

2

從我瞭解(我可能是錯的)的IE高達7版本不能正確處理命名新創建的元素的屬性,改變名稱屬性上飛。

基本上什麼是重要的,如果你確定支持IE8 +,你需要確保它不會呈現在IE兼容模式下。我用下面的meta標籤:

<meta http-equiv="X-UA-Compatible" content="IE=8" /> 

更多關於這個垃圾:http://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx

我相信你無法實現這一目標使用IE7-既不在IE8時,它不會呈現在IE8標準模式。

編輯:我敢肯定你意識到這一點,但你可以通過按下F12 檢查在IE8渲染模式,它在頂線文檔模式

+0

從我上面的說明繼續,我會嘗試調整代碼來測試生成新元素,包括名稱屬性在一個去繞過該IE錯誤。我沒有機會檢查JQuery的'clone()'方法,以查看它是以哪種方式創建重複的,無論是一次執行還是基於對象的方法。我會回到這是否有效。哦,我堅持支持IE6 +,因爲客戶端是不想升級的政府機構:S lol – Lski

+0

只需確認,創建新行作爲完整字符串,以便選擇將一次構建,其名稱爲attr(正如所見[鏈接] http://jsfiddle.net/lski/K6a8J/)仍然無法正常工作。我會爲你的答案提供一個** + 1 **,因爲這是一件好事,但我沒有代表抱歉 – Lski