1

HTML

<select id="selectDepartment">
  <option value="1">120</option>
  <option value="2">20</option>
  <option value="3">140</option>
  <option value="4">4120</option>
  <option value="5">560</option>
  <option value="6">451</option>
  <option value="7">310</option>
  <option value="8">656</option>
  <option value="9">444</option>
  <option value="10">555</option>
  <option value="11">2560</option>
  <option value="12">450</option>
</select>

jQuery

$("#selectDepartment").change( function() {

alert($("select option:selected").val()); 

});

当我选择任何一个选项时,上述函数总是在警报时显示值1

4

2 回答 2

5

您查找选择选项的方法含糊不清。你说的是“抓住所有<select>的东西”。:select然后,您继续从每个(页面上的所有<select>s)中获取ed 选项。继续,.val()从顶部取出第一个值。

简而言之,您总是获取页面上第一个 <select>找到的选定值。假设#selectDepartment不是第一个<select>,你的价值永远不会改变。

尝试将范围保持在当前<Select>使用范围内this

$('#selectDepartment').change(function(){
  var selopt = $('option:selected',this);
});

请注意,我将范围指定为<select>触发.change(). 另请注意,这确实不是必需的,val()因为它很容易工作:

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

让 jQuery 完成繁重的工作。option:selected如果您想要控制特定元素的样式,或者您正在使用多选并想要更多控制,您真的只需要。

于 2012-04-17T18:34:31.267 回答
0

你可以这样做:

$("#selectDepartment").change( function() {

     var selected = $(this).find(":selected");

});
于 2012-04-17T18:38:33.713 回答