jQuery选择器在IE7/8中不起作用
jQuery selector does not work in IE7/8
有人知道为什么这在IE7/8中不起作用吗?
drop_area = $('div#drop_area');
它可以在IE9、FF2/3和Chrome中完美工作。Internet Explorer 7/8给出以下错误:
SCRIPT438: Object doesn't support this property or method
编辑:这是我的javascript附带的HTML:http://pastebin.com/nwxx8RzW
IE在全局范围内注册某些属性时有一种奇怪的行为。具有给定ID的元素可以简单地通过使用ID来访问。
因此,您有一个ID为"drop_area"的元素,可以使用此ID在IE中访问它,请尝试:
alert(drop_area.tagName)
检查它。(应该给出"DIV")
那么会发生什么呢:当使用drop_area = $('div#drop_area');
时,您试图将其他内容分配给这个元素,但这是对DOMElement的无效操作。
因此,使用var关键字来澄清您想要创建一个变量
var drop_area = $('div#drop_area');
或者在必须在函数内创建全局变量的情况下,将变量分配给全局上下文:
window['drop_area'] = $('div#drop_area');
您在pastebin上显示的代码存在许多全局变量问题。换句话说,您在编码时假设您所声明的变量在范围内是局部的,而实际上它们是全局的。示例包括set
、box_handle
、elements
、i
、id
、drop_area
、element
、row
、image_id
等。当您的所有函数都可以很容易地封装在其他函数中时,它们的作用域也是全局的。
现在,我不知道是否有一些微妙的交互正在进行,是否有些代码已经被其他代码锤击(全局)数据集,但似乎肯定有什么东西被覆盖了,因此方法和属性正在消失。首先,我将遍历代码并将var
添加到局部变量中。接下来,我将把大部分代码封装在一个匿名的自动执行函数中。
通常该错误显示,您在同样使用Prototype的网站上使用jQuery。这就是为什么会出现错误(实际上是Prototype抛出的)。另一种可能性是,在jQuerylib被包含到HTML中之前,您尝试调用代码。
为了确保这不是我的第一个猜测,请将以下代码添加到您的JS代码中:
$.noConflict();
因此,在包含jQuery之前,将Prototype包含在HTML中是很重要的:http://api.jquery.com/jQuery.noConflict/
如果用jQuery()替换所有出现的$()并且它有效,那么这是同时使用jQuery和Prototype的第一个问题。
您有一个id为"drop_area"的元素吗?ie6/7/8自动使用元素id为dom元素分配一个全局var。更多的代码会有所帮助。
- Recaptcha在IE7和IE8中不起作用
- 面向对象的Javascript代码在IE7中不起作用
- jQuery函数在IE7中不起作用
- javascript/jquery选项卡在IE7、8或9中不起作用
- 在使用JavaScript的IE7/8中,数组上的.indexOf函数不起作用
- 使用onsubmit函数的Javascript验证在IE8和IE7中不起作用
- 在IE7中,两个函数在window.onload中不起作用
- Posted Flash on Wall (FB.ui js SDK),在IE7/8和Opera中不起作用
- Javascript SDK 在 Facebook Canvas App IE7/8 中不起作用
- .live() 中的 jQuery .select() 在 IE7 和 IE8 上不起作用
- ExCanvas 在 IE7 和 IE8 IFrame 中不起作用
- JQuery 显示/隐藏不起作用的 IE7
- jQuery fancybox 在 IE7 中不起作用
- offset().top 在 IE7 中不起作用
- jQuery Unobposive 在 IE7 或 IE8 中不起作用
- Jquery IE7(:“可见”)验证器不起作用
- j查询数量(输入值)+ / - 按钮在IE7上不起作用
- 为什么使用 insertBefore() 将元素从友好的 iframe 中提取出来在 IE7 中不起作用
- 为什么这个javascript函数在ie7和8上不起作用
- setAttribute 在 IE7 中不起作用