0

这是我在 Firefox Jetpack 中使用 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++;
   }
});

即使上面的代码正确匹配了我动态创建$(this).val()的 SELECT,也不会返回选项值,而是返回选项文本(例如“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 回答