jquery选择更改事件获取选定选项

Zul*_*kis 228 jquery events

我用我的选择元素的更改事件绑定了一个事件:

$('select').on('change', '', function (e) {

});
Run Code Online (Sandbox Code Playgroud)

如何在更改事件发生时访问已选择的元素?

Nea*_*eal 444

$('select').on('change', function (e) {
    var optionSelected = $("option:selected", this);
    var valueSelected = this.value;
    ....
});
Run Code Online (Sandbox Code Playgroud)

  • @JoshWillik与`$("selector",this)`你在`this`的上下文中找到所有`selector`元素.写`$("selector",this)`几乎与`$(this).find('selector')相同 (12认同)
  • @JoshWillik:因为``$()``是``jQuery()``的别名,你可以在这里找到文档:https://api.jquery.com/jQuery/签名说明显然有`` jQuery(selector [,context])``.@Bellash:如果它"差不多",有什么区别?或者什么更快?我更喜欢``.find()``因为这更像OO IMO ... (8认同)
  • $("selector",this)语法是什么意思?我有一个大致的想法,但我不完全确定 (7认同)
  • 如何选择多重选择? (5认同)
  • @AdrianFöder对于你和其他寻找它的人来说,根据这个答案,`.find()`快了大约10%:http://stackoverflow.com/a/9046288/2767703 (3认同)

Bel*_*ash 74

您可以使用jQuery find方法

 $('select').change(function () {
     var optionSelected = $(this).find("option:selected");
     var valueSelected  = optionSelected.val();
     var textSelected   = optionSelected.text();
 });
Run Code Online (Sandbox Code Playgroud)

上面的解决方案完美无缺,但我选择为他们添加以下代码,以便获得点击选项.即使此选择值未更改,它也允许您获取所选选项.(仅使用Mozilla测试)

    $('select').find('option').click(function () {
     var optionSelected = $(this);
     var valueSelected  = optionSelected.val();
     var textSelected   = optionSelected.text();
   });
Run Code Online (Sandbox Code Playgroud)


sli*_*oad 15

委托替代方案

如果有人使用委托方法作为他们的监听器,请使用e.target(它将引用select元素).

$('#myform').on('change', 'select', function (e) {
    var val = $(e.target).val();
    var text = $(e.target).find("option:selected").text(); //only time the find is required
    var name = $(e.target).attr('name');
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle演示


1.4*_*4mb 6

我发现这更短更干净.此外,如果有多个项目,您可以遍历所选项目;

$('select').on('change', function () {
     var selectedValue = this.selectedOptions[0].value;
     var selectedText  = this.selectedOptions[0].text;
});
Run Code Online (Sandbox Code Playgroud)


小智 5

<select id="selectId">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>


$('#selectId').on('change', function () {
     var selectVal = $("#selectId option:selected").val();
});
Run Code Online (Sandbox Code Playgroud)

首先创建一个select option。之后,jquery您可以在用户更改select option值时获得当前选定的值。


小智 5

$('#_SelectID').change(function () {
        var SelectedText = $('option:selected',this).text();
        var SelectedValue = $('option:selected',this).val();
});
Run Code Online (Sandbox Code Playgroud)