获取select2中的当前元素

问题描述 投票:0回答:3

我想通过使用一个类来使用多个 select2,就像我在自动完成中所做的那样,但我无法在 select2 中做同样的事情。

这是我的代码:

$('.select2-autocomplete').select2({
  placeholder: "Search",
  minimumInputLength: 1,
  multiple: true,
  ajax: {
    url: "http://example.com/autocomplete-results",
    dataType: 'json',
    data: function(term, page) {
      return {
        q: term,
        type: $(this.element).data('type')
      };
    },
    results: function(data, page) {
      return {
        results: data
      };
    }
  },
});

除了这个之外一切都工作正常:

type : $(this.element).data('type') 

这里我需要 select2 元素数据类型值,但它始终是未定义的,我知道如何获得它吗?

谢谢

编辑:

<input type="hidden" data-type="products" name="products" class="select2-autocomplete">
<input type="hidden" data-type="customers" name="customers" class="select2-autocomplete">

我想显示与ajax不同的结果,这就是我想通过ajax发送数据类型的原因

javascript jquery jquery-select2
3个回答
7
投票

您可以在 select2:open 事件期间捕获活动元素,然后将其用于数据函数

这是我的例子:

(function(){
var theSelect2Element = null;
$('.select2-autocomplete').select2({
   ...
   data: function(term, page) {
      return {
        q: term,
        type: $(theSelect2Element).data('type')
      };
   },
   ...
}).on('select2:open', function(e){ 
   theSelect2Element = e.currentTarget; 
}))();

祝你好运!


2
投票

您可以使用

$(this.context)
,它将返回原始选择元素作为 jQuery 对象。

data: function(term, page) {
  return {
    q: term,
    type: $(this.context).data('type')
  };
},

0
投票

数据:函数(术语,页面){ 返回 { 问:术语, 类型: $('.select2-container--open').prev('select.select2-autocomplete').data('type') }; },

© www.soinside.com 2019 - 2024. All rights reserved.