2011-11-24 97 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的值更新您的問題,並且人們可能會進一步提供幫助。

相關問題