2011-08-07 23 views
0

動的に作成され、入力された2つの入力ボックスがあります。私がこれらを試して読んでみると、答えとして「未定義」が得られます。同じコードがWebアプリケーションの他の場所でどこでも動作するので、これは私を怒らせます。 私は値をつかむために使用するコードは次のようになります。入力ボックスから値を取得できません

$('#box1.1').val() 

これは、私は右だ、ID =「box1.1」を持つ要素の値を返す必要がありますか?

Firebugのコンソール:

>>> $('#box1.1').val() 
undefined 

そして、はい、私はjQueryのを使用してください。バージョン1.6.2。

ありがとうございます!

+0

セレクタがこの要素を取得しようとしています: '' –

答えて

2

これは有効なIDではありません(少なくともjQueryの見解では): "box1.1"。通常、ドットはクラス名を意味するので、jQueryセレクタエンジンを混乱させるので、idにドットを入れることはできません。

idを「box1_1」と変更して試してみることができます。ここで

はデモフィドルです:jQueryのでhttp://jsfiddle.net/UnUYP/

+0

実際には有効なIDです – grc

+0

HTML仕様に従って、はい。しかし、jQueryの言葉ではない!私の答えを更新しました。 – Mrchief

+0

期間を簡単にエスケープすることができます。 http://jsfiddle.net/Fc46Q/ – Yahel

1

、期間は特別な意味を持っています。それらはクラスセレクタに接頭辞として使用されます。 .1はIDの一部であり、1という名前のCSSクラスではないことをjQueryが知る方法はありません。代わりに、特別な意味を持たない文字を使用してください。アンダースコア

1

"box1"というIDを持つ要素を探しています。 "1"という名前のクラスが適用されていません... jqueryセレクターでは、#はidセレクター(CSSセレクター)クラス名を参照します。 id値にピリオドを使用しないようにするベストプラクティス

4

これは、CSSセレクタのコンマ線引きリストを受け入れるものとしてjQueryので$機能を考えることが一般的に最善です。 CSSでは、.手段「のクラス名を持つオブジェクトは...」そこで、jQueryのは、この例では、基本的には1のクラスがありBOX1 IDの下に何かを探しています:

<div id="box1"><span class="1"></span></div> 

のjQueryスパンを返します。この例では:

<div id="box1.1"><span class="not_1"></span></div> 

jQueryのは、必ずしもundefinedを返します。

あなたのIDはCSSでコンフリクトを引き起こすので、あなたのベスト・ベットは、単にクラス名から.を削除することです。通常、_または-が好ましい。

+0

これは間違いなく最も単純な例です。 。構文はクラスを記述するために予約されていますが、IDのハッシュ(#)で始まっています。これらは競合しており、未定義の戻り値を引き起こします。 – Jake

関連する問題