元素img的循环属性

时间:2012-09-27 04:45:27

标签: jquery attr

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

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

这是一个错误吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

这似乎是jQuery的一个错误。

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

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

答案 2 :(得分:0)

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

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