【问题标题】:select value of dropdownlist item jquery选择下拉列表项jquery的值
【发布时间】:2012-04-18 02:46:20
【问题描述】:

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

【问题讨论】:

  • 尝试将$("select option:selected") 更改为$("option:selected", this)$("select option:selected") 将抓取页面上的第一个选择,这可能不是您想要的。
  • 见:jsfiddle.net/Rdh3Q ...似乎工作正常..
  • @MarcoJohannesen:试试this version
  • @BradChristie ...不要改变他发布的代码有效。显然,如果他有更多的选择框,他需要一些不同的东西,比如你发布的答案。但考虑到他的 HTML,他的代码仍在“工作”。
  • @MarcoJohannesen:“工作”是一个相对术语,用于衡量的指标也是如此。我可以说我没有轮胎或发动机的汽车正在“工作”,因为它在路上滚动,但其他司机可能倾向于不同意。

标签: javascript jquery html drop-down-menu


【解决方案1】:

您找到选择选项的方法含糊不清。你说的是“抓住所有&lt;select&gt;s”。然后,您继续从每个人(页面上的所有&lt;select&gt;s)中获取:selected 选项。继续,.val() 从顶部取出第一个值。

简单地说,您总是获取页面上找到的first &lt;select&gt; 的选定值。假设#selectDepartment 不是第一个&lt;select&gt;,你的价值永远不会改变。

尝试使用this 将范围保持在当前&lt;Select&gt; 内:

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

请注意,我将范围指定为触发.change()&lt;select&gt;。另请注意,这确实不是必需的,因为 val() 也很容易工作:

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

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

【讨论】:

  • 只是添加,.text() 会给你所选选项的文本。
【解决方案2】:

你可以这样做:

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

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

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多