画像のループ属性の値を取得しようとすると<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')
。