使用 jquery 在 select 中获取 selected 选项的键值

Get key value for selected option in select using jquery

我有一个JSON喜欢

quarterJson = [{"quarter_id":1, "quarter":"Quarter 1", "end_date":'31.03.'},
               {"quarter_id":2, "quarter":"Quarter 2", "end_date":'30.06.'},
               {"quarter_id":3, "quarter":"Quarter 3", "end_date":'31.09.'},
               {"quarter_id":4, "quarter":"Quarter 4", "end_date":'31.12.'}];

并使用它填充 select 框的选项

$('#quarterSel').empty();
$('#quarterSel').append('<option value="0">--Select--</option>');
$.each(quarterJson ,function(idx,ob){
$('#quarterSel').append
('<option value="'+ob[quarter_id]+'">'+ob[quarter]+'</option>');            

现在我想为 select 框 quarterSel 中的 selected 选项获取 "end_date" 的值。我可以用下面的代码得到这个

var quarter_end_date = '';
$.each(quarterJson, function()
{
    if(this.quarter_id == $('#quarterSel').val())
    {
        quarter_end_date = this.end_date;
        return false;
    }
});

有没有更好的方法(避免循环)来做到这一点? 谢谢..

您可以使用数据 api 存储与选项关联的数据,然后使用它来获取结束日期

$('#quarterSel').empty();
$('#quarterSel').append('<option value="0">--Select--</option>');
$.each(quarterJson, function (idx, ob) {
    $('<option/>', {
        text: ob.quarter,
        value: ob.quarter_id
    }).data('data', ob).appendTo('#quarterSel');

});

var data = $('#quarterSel option:selected').data('data');
var quarter_end_date = data ? data.end_date : '';

您可以使用 Grep 函数来获取值

      var arrayfeedback ;
     arrayfeedback = jQuery.grep(quarterJson, function (n, i) {
                            return parseInt(quarter_id) == +$('#quarterSel').val()
                        });
      quarter_end_date=arrayfeedback[0].end_date ;