1
  <select id="testSelection">
           <option> test1 </option> 
           <option> test2 </option> 
           <option> test3 </option> 
           <option> test4 </option> <--- selected this one from the pull down menu 
           <option> test5 </option> 
           <option> test6 </option> 
  </select>

             $("#testSelection").change(function()
             {
                    alert($(this).text());
             });

对我来说很奇怪,警报消息显示了所有选择,但我希望它只显示在 test4 文本上。

4

3 回答 3

5
<select id="testSelection">
    <option value="1">test1</option>
    <option value="2">test2</option>
    .....
</select> 

这真的取决于你想要什么:

$("#testSelection").on('change', function() {
    // if you just want the text/html inside the select (ie: test1, test2, etc)
    alert($(this).find('option:selected').text()); 

    // or you want the actual value of the option <option value="THISHERE">
    alert($(this).val()); 
});​

jsFiddle 演示

于 2012-08-22T19:23:12.030 回答
1

您需要使用val()功能,而不是text()功能。

$("#testSelection").change(function()
{
    alert($(this).val());
});​
于 2012-08-22T19:24:07.617 回答
0

$(this).text()返回元素内的所有文本,在本例中为select元素。这就是为什么你得到"test1 test2 ...".

假设您想要所选选项的文本:

$(this).find(':selected').text()

如果您想要所选选项的 value 属性,那么 @mcpDESIGNS 的答案将起作用。但是,请注意,您需要为元素添加value属性,如下所示:option

<option value="test4">test4</option>
于 2012-08-22T19:24:27.697 回答