0

これは、FirefoxJetpack内でjQueryを使用しているときに直面する問題です。Jetpackコードでは、オプションとそれぞれの値を使用していくつかのSELECTボックスを動的に作成しています。

...
listOfWords[i] = "<select id=clozefox_answer> <option
value=wrongAnswer>distractor</option>"
listOfWords[i] += "<option value=trueAnswer>" + currentWord +
"</option></select>"
...
textStr = listOfWords.join(" ");
$(this).html(textStr);

これは正常に機能します。ユーザーがページのプルダウン選択リストを使用していくつかの選択を行い、[スコアの計算]ボタンをクリックした後、関数を実行してSELECTボックスをトラバースし、選択した値を取得します。

$(doc).find("select[id=clozefox_answer]").each(function (index) {
   var selectedValue = $(this).val();

   if (selectedValue == "trueAnswer") {
       numCorrectAnswer++;
   }
});

上記のコードは動的に作成されたSELECTと正しく一致しまし$(this).val()たが、オプション値ではなくオプションテキスト(「distractor」などの変数currentWordに含まれるもの)を返します。オプション値(「trueAnswer」や「wrongAnswer」など)を取得するにはどうすればよいですか?

4

2 に答える 2

1

すべてのHTML属性を引用符で囲んでみてください。これは、標準的な方法です。

また、findセレクターでは、引用符を囲んclozefox_answerid['id'='clozefox_answer']

それでも問題が解決しない場合は、を呼び出して値を取得してみてください$( this ).attr( 'value' );

于 2010-01-06T14:41:23.880 に答える
0

次のコードは、私が期待することを実行します。

var selectedValue = $(this).attr("value");

しかし、私はまだ理由がわかりません

var selectedValue = $(this).val();

期待どおりに動作しません。とにかく、私は今のところ私の問題を解決しました。

于 2010-01-06T18:50:53.173 に答える