select2 jQuery插件:获取所选选项的文本值?

时间:2015-06-05 16:36:15

标签: jquery jquery-select2

使用awesome PostgreSQL LIKE operator和Ajax数据源,我想知道如何获取所选选项的文本值。

使用正常的select元素,我会做这样的事情:

$('#myselect option:selected").each(function() {
  var $this = $(this);
  if ($this.length) {
    console.log($this.val(), $this.text());
  }
});

但这并不适用于select2,因为Ajax调用填充的<option>值没有文本。

同时,使用文档中建议的.val()来获取所选值只会返回一个ID数组,而不是显示元素的文本。

有什么方法吗?

JSFiddle在这里演示问题:jQuery select2 plugin

1 个答案:

答案 0 :(得分:0)

您可以将它们存储在对象中并再次检索:

var selectedValues = {}

$(".select2").select2({
  ajax: {
    url: "https://api.github.com/search/repositories",
    dataType: 'json',
    delay: 250,
    data: function (params) {
      return {
        q: params.term,
      };
    },
    processResults: function (data, page) {
      return {
        results: data.items
      };
    },
    cache: true
  },
  escapeMarkup: function (markup) { return markup; }, 
  minimumInputLength: 1,
  templateResult: function(repo) { 

    return repo.name + ' (' + repo.full_name + ')';
  },
   templateSelection: function(repo) { 
    selectedValues[repo.id] = repo.full_name;
    return repo.name + ' (' + repo.full_name + ')';
  }
});
$('#clickme').on('click', function() { 
    var id = $('.select2').val();
    console.log(selectedValues[id]); 
});