1

複数の要素を持つフォームがあり、それらを繰り返し処理し、選択した要素の値 (個々の ) を文字列と比較したいと考えています。val() を使用したいようですが...

$("#FormSection select[class='input-small']").each(function (a, b) {
    if (b.val()!="test") 
                alert('hello');
});

上記では、「val」が未定義であると言っています。しかし、b.id は実際には select 要素の 1 つと同じです。

代わりに jquery を直接使用して同じ選択要素を直接取得すると、val() は期待どおりに機能します。そこで、ループ内の b を直接グラブされた select と比較しました。そして違い: 直接取得すると、jQuery は単一要素の配列を返しました。val() に関するドキュメントでは、配列が必要であると述べられているため、おそらくこれが予想されます。

興味深いことに、私が期待していたとおりのプロパティ「b.value」がありますが、jquery メソッドのようにブラウザ間で互換性があるかどうかはわかりません。

キーワードが複数選択を許可する s に関する結果を返したため、これを検索するのに非常に苦労しました。

どんな考えでも大歓迎です!

ありがとう.. -ベン

4

3 に答える 3

2

b通常の DOM 要素であるため、JQuery オブジェクトとしてラップする必要があります。

if ($(b).val()!="test") 

フィドル

于 2013-06-16T03:04:52.153 に答える
2

$()使用するにはラップする必要がありますval()。val() はDOM要素の有効なメソッドではありませんが、あなたが言ったように、それを行う必要はありません。代わり.valueに、DOM要素のプロパティを使用できます。

$("#FormSection select[class='input-small']").each(function (idx, b) {
    if (b.value !="test") // b represents DOM Element select, $(b) represents jquery object representing DOM element.

    //if(this.value != test) or just use this. this context here is the element of current iteration.
                alert('hello');
});
于 2013-06-16T03:06:33.640 に答える
1

まず、セレクターは である必要がありますが"#FormSelection select.input-small"、それはさておき.each、各項目 (この場合は jQuery オブジェクトの各要素) を反復処理します。これはb要素<select>自体であることを意味するため、jQuery 関数はありません。

$(b).val()代わりに試してください。

于 2013-06-16T03:05:52.840 に答える