jQuery选择更改事件获取选择的选项

Posted

技术标签:

【中文标题】jQuery选择更改事件获取选择的选项【英文标题】:jQuery select change event get selected option 【发布时间】:2012-09-26 20:22:54 【问题描述】:

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

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

);

如何访问发生更改事件时被选中的元素?

【问题讨论】:

@superuberduper 我尽可能地避免使用 jquery,但抵抗是徒劳的。被同化后你会感觉好多了。 【参考方案1】:
$('select').on('change', function (e) 
    var optionSelected = $("option:selected", this);
    var valueSelected = this.value;
    ....
);

【讨论】:

$("selector", this) 语法是什么意思?我有一个大概的想法,但我不完全确定 @JoshWillik 和$("selector", this) 您在this 的上下文中找到所有selector 元素。写$("selector", this)$(this).find('selector')差不多 @JoshWillik:由于$()jQuery() 的别名,您可以在此处找到文档:api.jquery.com/jQuery 声明的签名显然是jQuery( selector [, context ] )。 @Bellash:如果它“几乎相同”,有什么区别?或者什么更快?我更喜欢.find(),因为这更OO IMO... 多选时如何检查? @AdrianFöder 对于您和其他正在寻找它的人来说,.find() 根据这个答案快了大约 10%:***.com/a/9046288/2767703【参考方案2】:

你可以使用jQuery find方法

 $('select').change(function () 
     var optionSelected = $(this).find("option:selected");
     var valueSelected  = optionSelected.val();
     var textSelected   = optionSelected.text();
 );

上述解决方案完美运行,但我选择为愿意获得点击选项的他们添加以下代码。即使此选择值未更改,它也允许您获取所选选项。 (仅在 Mozilla 上测试过)

    $('select').find('option').click(function () 
     var optionSelected = $(this);
     var valueSelected  = optionSelected.val();
     var textSelected   = optionSelected.text();
   );

【讨论】:

绑定到option 事件是一个冒险的提议,尤其是在移动设备上。例如,Webkit 不正确支持此事件:bugs.chromium.org/p/chromium/issues/detail?id=5284 好酷!正如我所说,许多浏览器不支持第二种解决方案!【参考方案3】:

委托替代

如果有人使用delegated approach 作为他们的监听器,请使用e.target(它将引用选择元素)。

$('#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');

JSFiddle Demo

【讨论】:

+1 因为这是我想要的,但是当我在本地尝试时,它不起作用。仅在 jsfiddle 工作,我必须添加什么 CDN?【参考方案4】:
<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();
);

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

【讨论】:

你能分享一下你的答案更详细的解释吗? @MostafizurRahman 我的代码很简单,这就是我只写代码的原因。 简单和更少的代码谢谢,我正在寻找这个答案。【参考方案5】:

我觉得这个更短更干净。此外,如果有多个,您可以遍历选定的项目;

$('select').on('change', function () 
     var selectedValue = this.selectedOptions[0].value;
     var selectedText  = this.selectedOptions[0].text;
);

【讨论】:

selectedOptions 并非在所有浏览器中都可用。 @BernhardDöbler 哪个?有什么来源吗? 我将您的代码复制到 IE 11 并出现错误。我最终得到了this.options[ this.options.selectedIndex ]。 Mozilla 表示 Firefox 从 26 开始支持,IE 不支持。 除IE外所有浏览器都支持。 developer.mozilla.org/en-US/docs/Web/API/htmlSelectElement/…【参考方案6】:
$('#_SelectID').change(function () 
        var SelectedText = $('option:selected',this).text();
        var SelectedValue = $('option:selected',this).val();
);

【讨论】:

【参考方案7】:

另一种获取所选值的简短方法,

$('#selectElement').on('change',function()
   var selectedVal = $(this).val();
                       ^^^^  ^^^^ -> presents #selectElement selected value 
                         |
                         v
               presents #selectElement, 
);

【讨论】:

如果是这种情况,为什么不能 "var selectedVal=$("#selectElement").val()" 工作¿ 当在选择元素上发出的更改事件时,情况是获取值。如果您这样做,选择更改时不会更新值。【参考方案8】:

这也可以正常工作

(function(jQuery) 
  $(document).ready(function() 
    $("#select_menu").change(function() 
      var selectedOption = $("#select_menu").val()
    );
  );
)(jQuery);
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

【参考方案9】:

查看官方 API 文档 https://api.jquery.com/selected-selector/

这个好作品:

$( "select" ).on('change',function() 
  var str = "";
  // For multiple choice
  $( "select option:selected" ).each(function() 
    str += $( this ).val() + " "; 
  );
);

$( "select" ).on('change',function() 
  // For unique choice
  var selVal = $( "select option:selected" ).val(); 
);

并且容易做出独特的选择

var SelVal = $( "#idSelect option:selected" ).val();

【讨论】:

【参考方案10】:

您可以使用此 jquery 选择更改事件来获取选定的选项值

For Demo

$(document).ready(function ()    
    $('body').on('change','#select', function() 
         $('#show_selected').val(this.value);
    );
); 
<!DOCTYPE html>  
<html>  
<title>Learn Jquery value Method</title>
<head> 
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> 
</head>  
<body>  
<select id="select">
 <option value="">Select One</option>
    <option value="php">PHP</option>
    <option value="jAVA">JAVA</option>
    <option value="Jquery">jQuery</option>
    <option value="Python">Python</option>
    <option value="mysql">Mysql</option>
</select>
<br><br>  
<input type="text" id="show_selected">
</body>  
</html>  

【讨论】:

以上是关于jQuery选择更改事件获取选择的选项的主要内容,如果未能解决你的问题,请参考以下文章

使用选择选项下拉更改图像,但对于多个事件?

jQuery更改事件未更新

在选择框更改事件上获取隐藏输入字段的 ID

每次选择选择字段时,都会激活更改事件,但不会删除旧值

jQuery 选择更改显示/隐藏 div 事件

在选择更改事件上通过 jquery 提交表单