$ を使用して選択するたびに、一連の要素が取得され、選択に対して実行する各操作がすべての要素に対して実行されます。そのため$("pre").addClass("myClass")
、クラス 'myClass' がドキュメント内のすべての pre 要素に追加されます。さらに、操作は選択自体を返すので、次のような操作を連鎖させることができます。
$("pre").addClass("myClass").css("font-weight","bolder")
これにより、クラスが追加され、CSS プロパティの font-weight が太字に設定されます。
これに対する例外は、値を返す場合です。たとえば、最初の入力要素の値のような$("input").val()
ことをすると返されます
したがって、特定のケースでは、すべての事前要素を選択して、クラスとハイライトを追加する必要があります
$.fn.addTemplateSetup(function () {
this.find('pre')
.addClass("brush: plain")
.each(function () {
SyntaxHighlighter.highlight({}, this);
});
});
ただし、クラスはインラインスタイリングを適用しようとしているように見えるため、その方法も含めました
$.fn.addTemplateSetup(function () {
this.find('pre')
.css('brush', 'plain')
.each(function () {
SyntaxHighlighter.highlight({}, this);
});
});
それぞれの前に addClass/css を置いた理由は、addClass/css が適用された選択で each を呼び出すためです。each 関数内で addClass が使用されている場合、コレクション全体を 2 回反復するよりも遅いと予想される 1 つの要素の選択に対して each が呼び出されます。各要素への訪問回数はどちらの場合も同じであり、レビューでどちらにも反対します