4

複雑な Web アプリケーションを管理しています。

すべて同じ IDを持つ多数の div があります。

私はこれが完全に間違っていることを知っています。実際のdocument.getElementById()ところ、その ID では 1 つの一致しか生成されません。

ただし、次のように、jQuery を使用して探している要素を引き出すことができます (1.6.2 を使用しています)。$('#bad_id[nonstandard_attr_name=somethingSpecific]')

これが「解決策」であるとは言えません。

これが信憑性があるのか​​心配です。jQuery は本当に DOM ウォークを使用して ID に一致するすべての要素を検索するのでしょうか? それがおそらくすべてを取得する唯一の方法です。

最初に他の属性で要素をフィルタリングしてから、ID でフィルタリングしますか? それも望ましい動作を実現しますが、これを行う順序を知っておくとよいでしょう。

4

4 に答える 4

0

コメントに見られるように、私の推測では、なぜ要素を検索し続けるのかということでした。はい getElementByIdは最初の要素を返し、その後検索を停止しますが、jQuery では同じようには見えません。その「悪い」IDを持つすべての要素を返します。

このFiddleに見られるように、

したがって、すべての要素を選択しています。これは、jQuery が最初の要素で停止せず、ドキュメント全体を検索し続けることを意味します。したがって、IMO では、jQuery を使用して、共通の ID を持つ複数の要素を選択できます。問題はないはずです。

于 2013-08-06T18:08:49.863 に答える
0

使用されている以外の結果になるセレクターを使用するとgetElementById()、一貫した結果が得られるはずですが、IE8 は使用しないため、必ず IE8 でテストしてくださいdocument.querySelectorAll()

.find .children や .filterなどのメソッドを使用すると、id が一意であるかどうかに関係なく、一貫した結果が得られるはずです。

サンプル: http://jsfiddle.net/gb3Mz/

于 2013-08-06T18:02:20.537 に答える