111

以下代码有效:

$("#select-id").change(function(){
  var cur_value = $('#select-id option:selected').text();
  . . .
});

如何将第二行重构为:

var cur_value = $(this).***option-selected***.text();

你有什么用***option-selected***

4

9 回答 9

132

对于选定的值:$(this).val()

如果您需要选定的选项元素,$("option:selected", this)

于 2012-04-04T13:13:35.027 回答
121
 $(this).find('option:selected').text();
于 2012-04-04T13:12:47.343 回答
61

在我看来,下拉列表中的 onchange 事件的最佳和最短方法是获取所选选项:

$('option:selected',this);

获取值属性:

$('option:selected',this).attr('value');

获取标签之间的显示部分:

$('option:selected',this).text();

在您的示例中:

$("#select-id").change(function(){
  var cur_value = $('option:selected',this).text();
});
于 2014-12-12T10:00:24.420 回答
47
var cur_value = $('option:selected',this).text();
于 2016-04-03T03:16:21.387 回答
14

这应该有效:

$(this).find('option:selected').text();
于 2012-04-04T13:12:48.420 回答
9

您可以使用它find来查找当前 jQuery 对象指向的节点的后代的选定选项:

var cur_value = $(this).find('option:selected').text();

由于这可能是直接的孩子,我实际上建议使用.children

var cur_value = $(this).children('option:selected').text();
于 2012-04-04T13:13:46.203 回答
7
var cur_value = $(this).find('option:selected').text();

由于option很可能是select您的直系子女,因此也可以使用:

var cur_value = $(this).children('option:selected').text();

http://api.jquery.com/find/

于 2012-04-04T13:13:07.797 回答
0

最佳的揣测:

var cur_value = $('#select-id').children('option:selected').text();

在这种情况下,我更喜欢孩子,因为你知道你只会沿着 DOM 树走一个分支......

于 2012-04-04T13:13:46.843 回答
0

只是

$(this).val();

我认为 jQuery 足够聪明,知道你需要什么

于 2020-06-12T16:05:05.210 回答