ジョン・レシグがこの質問に具体的に対処している記事を誰かが指摘できない限り、決定的な答えが提供されているとは思えません。しかし、jQuery を使い始めたとき、私はよくこれを疑問に思い、それが最も害が少ないという結論に達しました。結局、必要なのは DOM 要素だけという可能性は十分にあります。その周りにjQueryラッパーを使用する必要がある/使用したい場合$()
は、わずか3回のキーストロークで済みます(または、より多くの人がそうしていますvar $this = $(this);
)。複数の関数呼び出しとメモリ割り当てを含むライブラリが常にそれを行うのとは対照的に、ライブラリが必要ない場合があります。
たとえば、次のことを考慮してください。
$("input").each(function() {
// Use this.value
});
そこには、DOM 要素を jQuery ラッパーで囲む理由はまったくありません。this.value
すべてのinput
フィールドに必要なのはこれだけです( 以外ですinput type="file"
がval()
、そこでも役に立ちません)。イベント ハンドラー (this
も "生の" 要素) では、まったく見なくてもかまいませんthis
。
しかし、この場合:
$(":input").each(function() {
var val = $(this).val();
// Use `val`
});
... を使用する本当の理由があり$(this)
ます。:input
セレクターは、値が異なるプロパティから取得されるいくつかの異なる要素タイプ ( input
、select
、 ) に一致しbutton
、それを抽象化します。textarea
val()
したがって、生の要素を提供することはパフォーマンスの問題であると結論付けました。まったく使用しない場合、または基本的な DOM プロパティのみを使用する場合は、jQuery インスタンスでラップする必要はありません。あなたがそれをする必要がある/したい場合は、コードでそれを行うことができます。