私がする時
var foo = $('n');
console.log(foo);
jQueryオブジェクトを取得します。しかし、私がそうする場合:
var bar = $(' ');
console.log(bar);
次に、Firefoxで「構文エラー、認識されない式:」エラーメッセージが表示されます。
なんで?
私がする時
var foo = $('n');
console.log(foo);
jQueryオブジェクトを取得します。しかし、私がそうする場合:
var bar = $(' ');
console.log(bar);
次に、Firefoxで「構文エラー、認識されない式:」エラーメッセージが表示されます。
なんで?
jQueryオブジェクトの引数が文字列の場合、有効なCSSセレクターまたは検出可能なHTMLタグのいずれかである必要があります。検出可能なHTMLタグではないため(文字列にとで囲まれたHTMLタグがないため<
)>
、CSSセレクターとして文字列を処理しようとします。
しかし、jQuery内のSizzleセレクターエンジンは、それが無効なCSSセレクターにあることを検出し、例外をスローします。トリガーされているjQuery内にこのコードが表示されます。
Sizzle.error = function( msg ) {
throw new Error( "Syntax error, unrecognized expression: " + msg );
};
これはHTMLの有効なスニペット' '
ですが、jQueryは、CSSセレクターを渡そうとしているのかHTMLタグを渡そうとしているのかを判断できる必要があります。そのために、HTMLとCSSセレクターを区別するために、オープンタグ文字とクローズタグ文字を検索し、<
HTMLタグの一般的な場所を検索します。>
あなたの場合、あなたはそのテストに失敗するので、CSSセレクターとしてあなたの文字列を処理しようとします(そうではありません)ので、失敗します。
有効な引数をjQueryに渡す必要があります。HTMLを渡す場合は、次のようにします。
var bar = $('<span> </span>');
これが機能する理由:
var foo = $('n');
console.log(foo);
'n'
それは有効なCSSセレクターですか。<n>
ドキュメントにタグがない限り、おそらくドキュメント内の何にも一致しませんが、有効なCSSセレクターです。
これは、jQueryオブジェクトがdom要素のラッパーであると想定しているためです。合格' '
すると、dom要素を作成できないため、エラーがスローされます。ただし、タグはなくn
、を$('n').length
与え0
ます。だから私はそれがjQueryの問題のパーサーだと思います。
簡単に言うと、jQueryはsizzleセレクターエンジンを使用しており、そのエンジンは。をどう処理するかを認識していません
。