なんらかの理由で JQuery にアクセスできないときは、通常、element.hasAttributeまたはを使用して手動で属性を選択しelement.getAttributeます。
ただし、古いブラウザ (IE <= 8) はhasAttribute. したがって、要素に特定の属性があるかどうかを確認したい場合はgetAttribute、戻り値を使用して確認する必要があります。
if ((element.hasAttribute && element.hasAttribute("foo"))
|| (element.getAttribute("foo") != null))
{
....
}
これにより、 を使用することをまったく忘れてhasAttribute、常にgetAttribute. 問題は、 の戻り値に関する一貫したドキュメントが見つからないことですgetAttribute。実際にはnull、属性が存在しない場合、ほとんどのブラウザーで返されますが、空の stringが返されることもあります。これは、DOM 3 仕様に従って行うことになっているためです。
残念ながら、空の文字列を返すと、次のあいまいさを解消する方法がなくなります。
<div data-my-attribute = ""></div>
と
<div></div>
hasAttributeしたがって、実際には、ブラウザが をサポートしているかどうかを最初に確認し、サポートしていない場合は使用するのが最も移植性の高い方法のgetAttributeようgetAttributeですnull。存在。
これは本当にこれを行うための最良の方法ですか?または、プレーンな Javascript でクロスブラウザー属性検出を記述するより良い方法はありますか?