div、span、および入力の厳密な命名規則がないため、誤って複数の入力に同じ ID を与えることがよくあります。これにより、もちろん jQuery/javascript コードが機能しなくなります。
複数の要素に同じ ID を指定することは許可されていませんが、それが発生してもエラー メッセージはどこにも表示されません。私がしたこと。
複数の要素が同じ ID を持っていることを知る方法はありますか?
div、span、および入力の厳密な命名規則がないため、誤って複数の入力に同じ ID を与えることがよくあります。これにより、もちろん jQuery/javascript コードが機能しなくなります。
複数の要素に同じ ID を指定することは許可されていませんが、それが発生してもエラー メッセージはどこにも表示されません。私がしたこと。
複数の要素が同じ ID を持っていることを知る方法はありますか?
これは、HTML を何度も何度も書くことで学べる標準的な方法です。重複する ID の使用を避ける良い方法は、使用する ID を減らし、代わりにクラスを使用することです。
、、、、など#header
、ウェブサイトの重要な要素や構造要素にのみ ID を使用してください。#footer
#main
#slideshow
#content
#sidebar
ページでIDを何度も繰り返している場合は、クラスを使用する必要があります。複数回再利用される要素/スタイル付きモジュールは、クラスを使用して識別される必要があります。
また、一部の IDE では、特別な構文の強調表示/テキスト装飾を実行して、奇妙なことが起こっていることを知らせます。すぐに思い浮かぶのは、SublimeText2 と Visual Studio の 2 つです。
ページ上の重複 ID をチェックするために実行できる jQuery スニペットを次に示します。ページに重複がある場合は、コンソール (F12 開発者ツール/Firebug) で通知されます。
(function () {
var found = false;
$('[id]').each(function () {
var ids = $('[id=' + this.id + ']');
if (ids.length > 1 && ids[0] === this) {
console.warn('ID used more than once: ' + this.id, ids);
found = true;
}
});
if (!found) {
console.log('No duplicate IDs found');
}
})();
これをグローバル フッターに挿入して、すべてのページで実行されるようにすることもできます。
ここに JSFiddle があります: http://jsfiddle.net/A7h75/
優れた IDE はこれをキャッチします。私は Zend Studio (これは基本的にEclipseの PHP 固有のバージョンです) を使用しており、コードを記述するときにこれをキャッチします。釣れるのはそれくらいです。
HTML が有効かどうかは、 W3C Validator Serviceで確認できます。
これにより、HTML 内のすべてのエラーが表示されます。クロスブラウザー レンダリングの問題を引き起こす可能性のあるエラーについて HTML をチェックすることをお勧めします。
Validator サービスに「手動で」アクセスすることなく HTML をチェックするための Firefox および Chrome 用のさまざまな拡張機能が存在します。
この機能を利用して重複をチェックできます
function getDuplicateIds(){
var dups = [];
$('[id]').each(function(){
if($('[id="'+$(this).attr('id')+'"]').length > 1) dups.push($(this).attr('id'));
})
return $.unique(dups);
}
これに対してエラーを有効にする方法はありませんが、特定の状況では:
$('[id={elementId}]').length > 1
トリックを行う必要があります。
編集:訂正していただきありがとうございます。