なんらかの理由で 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 でクロスブラウザー属性検出を記述するより良い方法はありますか?