2012-09-27 62 views
2

当我尝试获取图像的循环属性的值<img src="myimag.png" loop="3" /> jQuery函数返回“循环”但不是值。 它正常工作与所有其他人一样:元素的循环属性img

var src = $(this).attr('src'); 
var alt = $(this).attr('alt'); 

这是一个错误?

回答

2

I did some digging显然loop是布尔属性(loop="loop")。 The spec说:

布尔属性可以合法地采取单个值:该属性本身的名称(例如,selected="selected")。

下面是这些类型的属性的其余部分:

rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i; 

的jQuery需要这些类型的属性的考虑,并返回正确的属性值,无论属性的实际价值。如果该属性存在,则将其设置为“true”。


如果你想将数据存储在HTML元素,使用data-属性:

<img src="myimag.png" data-loop="3" /> 

现在,$('img').data('loop')返回3

+0

+1好回答。 – undefined

+0

Thx搅拌机,我得到了! – code19

0

这似乎是一个jQuery的bug。

原生方法为您提供了正确的价值。

console.log($('img')[0].attributes.getNamedItem('loop').nodeValue); 
+0

好,它的工作原理,thx很多帮助:) – code19

0

loop是一个布尔属性。 jQuery将返回属性本身的名称以用于布尔属性(也就是说,这也会发生在disabled之内)。loop也不再处于HTML规范中(http://www.w3.org/community/webed/wiki/HTML/)元/ IMG#HTML_Attributes),所以你不应该使用它。

我不是你的使用它的目的既清楚。好像你或许应该使用data-loop代替。然后你可以.attr('data-loop').data('loop')