2

当我尝试获取图像<img src="myimag.png" loop="3" /> 的循环属性的值时,jQuery 函数返回“循环”但不返回值。它适用于所有其他人,例如:

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

这是一个错误吗?

4

3 回答 3

2

我做了一些挖掘,显然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

于 2012-09-27T04:54:34.303 回答
0

这似乎是一个 jQuery 的错误。

本机方法为您提供正确的价值。

console.log($('img')[0].attributes.getNamedItem('loop').nodeValue);
于 2012-09-27T04:55:44.957 回答
0

loop是一个布尔属性。jQuery 将为布尔属性返回属性本身的名称(即,这也会发生disabledloop也不再在 HTML 规范中(http://www.w3.org/community/webed/wiki/HTML/Elements/ img#HTML_Attributes) 所以你不应该使用它。

我也不清楚您使用它的目的是什么。似乎您应该data-loop改用它。然后您可以使用.attr('data-loop')或正常访问它.data('loop')

于 2012-09-27T04:56:31.273 回答