2

私はjQuery 1.7.1を使用していますが、他のJSライブラリ/フレームワークは使用していません。問題を引き起こしている特定のテーブルを除いて、ほとんどの要素を問題なく選択できます。これは、Firefox と Chrome の両方で発生します。

すべてを説明する画像は次のとおりです。

Chrome JavaScript コンソール

この画像の手順は次のとおりです。

  1. ページ上のすべてのテーブルを選択します
  2. 必要なテーブルとは異なるテーブルを選択します
  3. そのテーブルを「display: none」に設定しました (jQuery が「display: none」を気にしないことを示すためだけです)。
  4. 非表示になったので、もう一度そのテーブルを選択します。すべて良好。
  5. 次に、実際に必要なテーブルを選択してみます。私は何の見返りも得ません。
  6. テーブルの初期配列を使用して、必要なテーブルを変数に割り当てます。
  7. jQuery はそのテーブルを正常に返し、現在は変数 "theTableIWant" に格納されています。
  8. テーブルの「id」は、ステップ 5 で選択した「id」とまったく同じですが、うまくいきませんでした。

jQueryがテーブルを私に渡さないのはなぜですか? なぜこれが起こるのでしょうか?

4

5 に答える 5

3

#IDのjQueryセレクターの特殊文字であるため機能しません。次のエラーが発生します。Syntax error, unrecognized expression: #office_set-###

IDで本当に使用する必要がある場合###(マットが投稿した理由でお勧めしません)、次のように選択してエスケープできます。

​$('#office_set-\\#\\#\\#')

-http://jsfiddle.net/infernalbadger/fpcME/

\実際にjQueryセレクターエンジンに渡したいので、ダブルエスケープする必要があります。

于 2012-09-26T12:44:06.533 に答える
2

これらのメタ文字のいずれも使用しない!"#$%&'()*+,./:;<=>?@[\]^{|}~でください:ID、クラスのタグ名、属性、および値(バックティック: `ですが、コードブロックに入れることはできません^^)。

これらの文字を使用する必要がある場合は、2つの円記号を使用してセレクターでエスケープできます。

$('#office_set-\\#\\#\\#')

ところで、これらの文字が、たとえばonclick属性で、javscriptコードとして使用されている場合、あなたの質問は本当に関連性があります。特定のコードを含む要素は、メタ文字を適切にエスケープした場合にのみ見つけることができます(メタ文字はたくさんあります)。

ソースと詳細はこちら: http ://api.jquery.com/category/selectors/

于 2012-09-26T12:47:57.717 に答える
2

"#" は、DOM ID 内では正式に有効ではありません: http://www.w3.org/TR/REC-xml/#NT-Nameしたがって、一貫したサポートが得られません。

于 2012-09-26T12:42:35.417 に答える
0

1)手順5のテーブルのセレクターが正しいことを確認します。同じIDを持つ要素が複数ある可能性があります。

2)JQuery要素を変数に割り当てる場合、そのように生のDOM属性を呼び出すことはできません。試す:

theTableIWant.attr('id');

または:

var theTable = $(theTableIWant).get(0);
theTable.id;
于 2012-09-26T12:44:27.910 に答える
0

IDの#文字はjQueryの特殊文字であるため、引用符で囲む必要があります。

$('#office_set-\\#\\#\\#');

これは二重の円記号であるため、JavaScriptはそれらを単一の円記号に変換し、jQueryがそれを認識します。

于 2012-09-26T12:48:00.630 に答える