2011-11-24 93 views
1

我正在使用jQuery 1.6.1和attr()方法,它在所有浏览器上都能正常工作,除了IE7。SetAttribute在IE7中无法正常工作

在控制台,它强调在jQuery的JS的功能的setAttribute说:未实现

我认为IE7不支持,所以我试图解决它:

if(Object.prototype.hasOwnProperty('setAttribute')){ 
    $(e).attr(key, value); 
}else{ 
    e[key] = value; 
} 

它仍然告诉我:

对象不支持此操作

这有什么解决方案?

+1

好吧,'setAttribute'方法当然没有在Object.prototype对象上定义......它在[* Element *接口]上定义(http://www.w3.org/TR/domcore/ #interface-element)的DOM标准。 –

+1

jQuery JS中的setAttribute函数?但jQuery没有setAttribute函数......只是'$(e).attr(key,value);'应该在IE7中工作。 –

回答

1

jQuery处理所有奇怪的情况,通常不需要解决任何问题。还要注意什么ŠimeVidas说,setAttribute没有在Object.prototype上定义,即使它是IE8和更低的HTML元素不会继承Object,所以功能检测不会按预期工作。

key变量的值是多少?如果更合适,请考虑使用prop(),如果您使用类,请考虑使用addClass()

+0

密钥的值是src或action或href。 – Ryan

1

duri是完全正确的。即使setAttribute在IE7上不起作用,jQuery的.attr()也可以。 jQuery背后的重点是平滑浏览器之间的这些差异,并为您提供一个框架,通用操作将“正常工作”。

从你的代码中删除的条件,只是离开这个:

$(e).attr(key, value); 

让jQuery的为您处理剩下的;这就是它的目的。

如果仍然不起作用,请用e,key和value的值更新您的问题,并且人们可能会进一步提供帮助。

相关问题