0

ページには5つの異なる入力コントロールがあり、それぞれに異なるIDと名前があり、クラスもあります。

<input id="txtName1" name="txtName1" class="jName" type="text" />
<br />
<input id="txtName2" name="txtName2" class="jName" type="text" />
<br />
<input id="txtName3" name="txtName3" class="jName" type="text" />
<br />
<input id="txtName4" name="txtName4" class="jName" type="text" />
<br />
<input id="txtName5" name="txtName5" class="jName" type="text" />

jqueryを使用してblurイベントを登録することで入力のグループを選択する場合、どちらがより効率的な方法ですか?私が尋ねる理由は、実際にページにこれらの入力コントロールが20個あり、jqueryの選択をできるだけ速くしたいからです。

1)タグIDで選択:

$(document).on("blur", "input[id*='_txtName']", function ($e) {
  alert("blur event successful");
})

また

2)クラスで選択:

$(document).on("blur", ".jName", function ($e) {
  alert("blur event successful");
})

編集: ここでの私の意図は、上記のコードのすべての入力要素にblurイベントをフックすることです。皆さん、ここで混乱してすみません。

4

4 に答える 4

1

JSPerfを使用してコードのベンチマークを試してみてください。そうすれば、答えが得られます。:)

http://jsperf.com/

ただし、真剣に心配するのは効率だけではありません。パフォーマンスは、上の要素やページの構造など、他の多くの考慮事項によって影響を受けます。

于 2012-10-17T17:51:18.197 に答える
0

カップルのもの:

  1. これらすべての要素で同じID値を使用しています。そうしないでください、彼らはユニークであるはずです。
  2. この場合、クラスセレクターは属性セレクターよりも高速であるため、クラスによる検索ははるかに高速です。

パフォーマンステスト: http: //jsperf.com/id-regex-vs-class

そのHTMLテストでは、id値を一意になるように変更しました。で終わるのではなく、セレクターで始まる属性も使用しています。

于 2012-10-17T17:54:39.187 に答える
0

サブセレクターのパフォーマンスは、一度に1つの要素(イベントをトリガーした要素)のみを対象としていることを考えると、大きな違いはありません。本当にパフォーマンスを向上させたい場合は、ドキュメントよりも優れたコンテキスト要素を選択してください。

于 2012-10-17T18:03:11.527 に答える
0

このフィドルを見てみると:jsFiddleデモ

IDを指定した*セレクターを使用すると、確実に少し遅くなることがわかります。(また、要素を50,000回選択していることに注意してください。これは、おそらく発生しないでしょう)。この場合のクラスセレクターは間違いなく高速ですが、違いはそれほど重要ではありません。

jQuery Webサイトから:http://api.jquery.com/attribute-contains-selector/

これは、値と一致するjQuery属性セレクターの中で最も寛大です。セレクターの文字列が要素の属性値内のどこかに表示される場合、要素を選択します。このセレクターを[属性に含まれる単語]セレクター([attr〜= "word"]など)と比較します。これは多くの場合、より適切です。

于 2012-10-17T18:05:48.090 に答える