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

时间:2015-02-13 05:27:14

标签: jquery json select key-value

我有一个类似

的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.'}];

并使用它填充选择框的选项

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

现在,我希望在选择框"end_date"中为所选选项获取quarterSel的值。我可以使用下面的代码

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

这样做有更好的方法(避免循环)吗? 谢谢..

2 个答案:

答案 0 :(得分:0)

您可以使用数据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 : '';

答案 1 :(得分:0)

您可以使用 Grep 功能获取值

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