2011-04-18 120 views
-1

這並不IE8的工作,但在所有其他瀏覽器:用相同元素的ID名稱變量選擇它們時

myDialog = $('#myDialog'); 
somethingHere = $('#somethingHere'); 

換句話說,如果變量名和元素ID名是相同的jQuery 1.5.1在IE8上死亡。

只要它們不同,它的作品。

myDialog1 = $('myDialog'); 

花了我3小時才意識到這一點。 : - |

這是一個錯誤或預期的行爲?

+1

將其作爲錯誤報告提交.... http://bugs.jquery.com/newticket – klabranche 2011-04-18 21:56:28

+0

這是報告jQuery錯誤的錯誤地方。試試jquery.com。 – chuckj 2011-04-18 21:57:07

回答

0

這可能是與事實,如果你聲明一個全局變量具有相同名稱的DOM元素的ID,它會在全局命名空間衝突的事情。我認爲這會在任何瀏覽器中導致你的問題,也許IE只是抱怨更多。例如在任何瀏覽器的腳本調試器中:

<div id="myDialog"> 

> window.myDialog 

.. <div id="myDialog"> 

> myDialog = "hello"; 

.. "hello" 

> window.myDialog 

.. "hello" 

哎呀!不再可能通過ID引用DOM元素。 DOM元素ID和全局變量共享相同的名稱空間。

+0

好的。這在所有的瀏覽器,但IE8罰款。 – TraderJoeChicago 2011-04-19 07:57:27

0

嘗試作序變量聲明varvar myDialog = $('#myDialog');