Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
select2 jQuery插件:获取所选选项的文本值?_Jquery_Jquery Select2 - Fatal编程技术网

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

select2 jQuery插件:获取所选选项的文本值?,jquery,jquery-select2,Jquery,Jquery Select2,使用Ajax数据源,我想知道如何获取所选选项的文本值 使用正常的select元素,我将执行以下操作: $('#myselect option:selected").each(function() { var $this = $(this); if ($this.length) { console.log($this.val(), $this.text()); } }); 但是这不适用于select2,因为Ajax调用填充的值没有文本 同时,按照文档中的建议使用.val()来

使用Ajax数据源,我想知道如何获取所选选项的文本值

使用正常的
select
元素,我将执行以下操作:

$('#myselect option:selected").each(function() {
  var $this = $(this);
  if ($this.length) {
    console.log($this.val(), $this.text());
  }
});
但是这不适用于
select2
,因为Ajax调用填充的
值没有文本

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

这有什么办法吗


JSFiddle在这里演示这个问题:

您可以将它们存储在一个对象中,然后像这样再次检索:

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]); 
});

@是的,这就是答案。非常感谢。