当我尝试获取图像<img src="myimag.png" loop="3" />
的循环属性的值时,jQuery函数返回“loop ”但不返回值。
它适用于所有其他人,如:
var src = $(this).attr('src');
var alt = $(this).attr('alt');
这是一个错误吗?
答案 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')
正常访问它。