IE中jQuery attr()的替代方案?

好吧,如果我错了,请纠正我,但我认为jQuery attr()在IE中不起作用。 ( 标记为wontfix )既然如此,最好的选择是什么? 例如,这适用于IE,

 jQuery(document).ready(function($) { $('.airsrc').each(function() { var $this = $(this); var src = $this.attr('data-websrc'); $this.attr('src', src); }); }); 

更新:哎呀…我意识到了这个问题。 我实际上在基于CSS3媒体查询的if语句中有这个。 IE8或更低版本中本机不支持的媒体查询。 attr()绝对有效!

我一直在IE上使用带有data-*属性的attr ,我从来没有遇到过问题。 这是一个实时版本 ,仅在IE6,IE7和IE9中测试过。 没有我的IE8盒子,但我再也没有问题。

我在IE中工作的attr()没有问题。 列出的错误描述如下:

当属性是.attr(“onchange”,“alert(’Hello event onchange!’)”)之类的事件时,JQuery函数.attr在IE下不起作用; 。 这是因为IE不明白这一点。 您可以检查,如果属性是事件,则在IE时生成eval函数。

具体来说,它与事件有关 。 常规属性应该不是问题。

请试试这个:

$this.data('websrc'); 而不是$this.attr('data-websrc');

我有类似的问题。 我有一些表格,我想轻松设置是否需要该字段。 我的表单输入看起来像这样:

< input id="myid" name="myname" type="text" required="true" />

除了IE9之外,它在所有方面都很棒! 卫生署!

问题是我不想用jQuery设置新属性,我不想扩展输入元素的原型….我只想要一个适用于所有浏览器的解决方案,而无需额外的代码或分枝。

我尝试了jQuery的prop()方法,但同样,它必须手动设置。 我想要一些能够将所有DOM元素加载并以这种方式提取数据的东西。

我发现jQuery attr()方法适用于除IE9之外的所有浏览器。 在戳了一会儿之后,我意识到属性在那里,但读取它在IE9上的处理有点不同。

所以,我最终以这种方式回忆起这些价值观:

var val = $('#elementID').attr('required') || $('#elementID')[0].getAttribute('required');

它并不完美,但效果很好,并没有要求我返回并使用“data-”重命名我的属性,或者在DOM加载后分配它们。

如果jQuery 1.6.x将这个更改添加到我们的attr()和prop()方法,那不是很好吗!

如果有人知道一个更优雅的解决方案,不需要在页面加载后设置属性,那么请告诉我。

如果您使用混合大小写的属性名称,似乎attr()将在IE中失败。 请务必使用所有小写字母作为属性名称。