2010-01-06 117 views
0

这是我在Firefox Jetpack中使用jQuery时遇到的一个问题。在我的Jetpack的代码,我动态地选择和他们各自的 值创造了一些选择框:使用jQuery获取选择列表的值

... 
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); 

这工作得很好。用户做出一些选择,现在后使用下拉选择列表页面上点击了计算分数按钮,我运行一个函数来遍历的选择框,并得到他们选择的值:

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

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

即使上面的代码正确匹配我的动态创建的SELECT,$(this).val()不会返回选项值,而是返回选项文本(例如“distractor”或任何包含变量currentword)。我如何获得期权价值(例如“trueAnswer”或“wrongAnswer”)?

回答

0

下面的代码所获得的价值做什么,我预计:

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

但我仍然不知道为什么

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

不能按预期工作。无论如何,我现在已经解决了我的问题。

1

尝试在所有HTML属性中加上引号,这是标准做法。

而且,在你find选择,你应该把周围clozefox_answerid['id'='clozefox_answer']

报价如果不工作,然后尝试通过调用$(this).attr('value');

+0

当然不能伤害! :) – rfunduk 2010-01-06 14:44:51

+0

我已经改变了代码的相关部分,但是仍然是同样的问题,$(this).val()返回选项文本而不是选项值: listOfWords [i] =“”; ... $(DOC).find( “选择[ID = 'clozefox_answer']”)每个(函数(指数){ \t变种了selectedValue = $(本).VAL(); \t如果(了selectedValue == “trueAnswer”){ \t numCorrectAnswer ++; \t \t}} ); – 2010-01-06 14:52:05

相关问题