ページの読み込み時間についてはあまり気にしないでください。
これは、ダウンロードが停止するまでにかかる時間の尺度にすぎず、ユーザーがサイトを使用できるようになるまでにかかる時間の尺度ではありません。
懸念されるのは、pageloadがページを使用する(またはページを表示する)機能をブロックする場合です。たとえば、CSSをロードする前に、ページの上部にすべてのJSをロードする場合などです。
個人的には、あなたのフォーマットは素晴らしいと思いますが、それはあなたが多くの割り当てを行っているように見えますid
、そしてjQueryは手で聞いています、それは恐ろしい、ひどいことです。
data-set
html5属性を使用するようなことをしてみませんか?
<a data-linkType="JS-Override" data-methodName="doSomethingInternally">link</a>
dataset
プログラムから、要素のを呼び出すことができます。
var anchors = document.getElementsByTagName("a");
[].forEach.call(anchors, function(anchor) {
if (anchor.dataset.linkType !== "JS-Override") { return; }
var extension = anchor.dataset.methodName;
anchor.addEventListener("...", function () { setHash(extension); }, false);
});
これは非常に簡単な例ですが、機能します。現在、データセットのサポートは良好です。old-IEを含むすべてのブラウザーで機能させるには、単純なAPIでラップする必要があります(新しいブラウザーはデータセットから読み取り、古いブラウザーは「data-XXX」属性の属性リストを読み取る必要があります-jQueryはこれをラップしますの中へ.data();
そしてもちろん、あなたはあなたのページにたくさんのアンカーを持っているかもしれません、そしてそれらのほんの一握りだけがあなたが今探していることをするつもりです......だからそれらをつかむためのトリックがありますあなたが彼らに与えるクラスによって、あなたがa
ページ上のすべてによってソートされないように。
...または、a
特別な内部ページであるそれぞれがメニューdivや設定divなどに含まれていることがわかっている場合は、それらを取得します。
var menu = document.getElementById("myMenu"),
jsLinks = menu.getElementsByTagName("a");
[].forEach.call(jsLinks, function (anchor) { /* everything mentioned before */ });