当我尝试获取图像<img src="myimag.png" loop="3" />
的循环属性的值时,jQuery 函数返回“循环”但不返回值。它适用于所有其他人,例如:
var src = $(this).attr('src');
var alt = $(this).attr('alt');
这是一个错误吗?
我做了一些挖掘,显然loop
是一个布尔属性(loop="loop"
)。规范说:
布尔属性可以合法地采用单个值:属性本身的名称(例如,
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
。
这似乎是一个 jQuery 的错误。
本机方法为您提供正确的价值。
console.log($('img')[0].attributes.getNamedItem('loop').nodeValue);
loop
是一个布尔属性。jQuery 将为布尔属性返回属性本身的名称(即,这也会发生disabled
。 loop
也不再在 HTML 规范中(http://www.w3.org/community/webed/wiki/HTML/Elements/ img#HTML_Attributes) 所以你不应该使用它。
我也不清楚您使用它的目的是什么。似乎您应该data-loop
改用它。然后您可以使用.attr('data-loop')
或正常访问它.data('loop')
。