选择时使用具有相同元素ID名称的变量

时间:2011-04-18 21:54:02

标签: jquery internet-explorer-8

这不适用于IE8,但适用于所有其他浏览器:

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

换句话说,如果变量名和元素id名是SAME jQuery 1.5.1在IE8上死掉。

只要它们不同就有效。

myDialog1 = $('myDialog');

我花了3个小时才意识到这一点。 : - |

这是一个错误还是预期的行为?

2 个答案:

答案 0 :(得分:0)

尝试使用varvar myDialog = $('#myDialog');

为变量声明添加前缀

答案 1 :(得分:0)

这可能与以下事实有关:如果声明一个与DOM元素ID同名的全局变量,它将在全局命名空间中发生冲突。我认为这会导致你在任何浏览器中出现问题,也许IE只会抱怨更多。例如在任何浏览器的脚本调试器中:

<div id="myDialog">

> window.myDialog

.. <div id="myDialog">

> myDialog = "hello";

.. "hello"

>  window.myDialog

.. "hello"

糟糕!不再可能通过ID引用DOM元素。 DOM元素ID和全局变量共享相同的命名空间。