2
<!DOCTYPE HTML>

<script src='http://code.jquery.com/jquery-latest.min.js'></script>

<body>

<div id='mydiv'>Hello, buddy.</div>
<div id='mydiv'>Hello, friend.</div>

</body>

JQueryの場合$('#mydiv')、最初のdivのみを選択します$('div#mydiv')が、選択するとすべてが選択されます。

IDだけでなく要素も指定すると、同じIDを持つが、divではない他の要素を選択できなくなることを理解しています。

これはバグではありませんか?$('#mydiv')idが「mydiv」であるすべての要素を選択するべきではありませんか?

4

3 に答える 3

4

バグではありません...ID(#myId)が複数のインスタンスで使用されることは想定されていません。そのため、クラス(.myClasses)があります。

したがって、クラスは好きなだけ使用できます。ただし、IDはHTMLページごとに常に一意です。1つのIDが多くの異なるページに表示される場合がありますが、常に一意のIDとして表示されます。

于 2013-01-19T03:04:14.267 に答える
4

jQueryの説明

また、あなたの場合、jQueryは1つの要素と、の最初の要素のみを選択する必要がありますID。も指定divしているので、を使用しgetElementsByTagName、属性をIDと照合します。したがって、すべてのインスタンスを返します。私が間違っている場合は訂正してください。

提案

Web標準によると、id属性は一意である必要があります。したがって、各要素には一意のIDが必要です。複数の要素に使用したい場合は、クラスがあります。

また、複数のIDがある場合、HTMLは検証されません。

また、XHTML1.0仕様から

XMLでは、フラグメント識別子はタイプIDであり、要素ごとにタイプIDの属性は1つだけです。したがって、XHTML 1.0では、id属性はタイプIDであると定義されています。XHTML 1.0ドキュメントが適切に構造化されたXMLドキュメントであることを保証するために、XHTML 1.0ドキュメントは、上記の要素でフラグメント識別子を定義するときにid属性を使用する必要があります。XHTMLドキュメントをメディアタイプtext/htmlとして提供するときに、このようなアンカーに下位互換性を確保する方法については、HTML互換性ガイドラインを参照してください。

于 2013-01-19T03:07:13.157 に答える
2

#mydivを使用するように最適化されている可能性があります。これは、仕様getElementByIdで次のように説明されています。

複数の要素がこのIDを持っている場合、動作は定義されません。

通常、そのようなIDを持つ最初の要素が返されます。

于 2013-01-19T03:07:35.650 に答える