1. ホーム
  2. jquery

[解決済み] jQueryセレクタの先頭のコロンは何のためにあるのですか?

2023-03-31 19:18:59

質問

Wijmoツールキットを使い始めて、ドキュメントページでこれに似たセレクタの例をたくさん見かけました。

$(":input[type='radio']").wijradio();

私のはこんな風に書いてました。

$('input[type=radio]').wijradio();

これらは同じように動作するのでしょうか、それとも私が見逃している何かがあるのでしょうか?

上の2つの違いに注意してください。最初のセレクタはプレフィックスがコロンで、入力タイプに引用符が付いています。

どのように解決するのですか?

:input jQuery 拡張 であるのに対し input はCSSセレクタです。

textarea , button そして select の要素は前者にはマッチしますが、後者にはマッチしません。

後者の方が速いので、特定の radio の例を見てください。使用方法 :input を使用します。 <input> タグでない場合でもです。そのような場合でも、まず標準的な CSS セレクタを使用し、次に .filter(':input') を使うことです。

inputはjQueryの拡張機能であり、CSSの仕様には含まれていません。 仕様の一部ではないため、:input を使用したクエリでは DOMネイティブのquerySelectorAll()メソッドが提供するパフォーマンスブーストを利用できません。 メソッドによるパフォーマンスの向上を利用できません。要素を選択するために :input を使用する場合、最高のパフォーマンスを得るには、最初に 要素を選択するために :input を使用する場合、最高のパフォーマンスを得るには、まず純粋な CSS セレクタを使用して要素を選択し、次に .filter(":input") を使用します。

1.7.2 のソースでは、:input フィルタは nodeName に対して正規表現をテストします。

input: function( elem ) {
            return (/input|select|textarea|button/i).test( elem.nodeName );
},