Javascript 选择2 jQuery插件:如何获取标签替换列表的引用?

Javascript 选择2 jQuery插件:如何获取标签替换列表的引用?,javascript,jquery,select,jquery-select2,Javascript,Jquery,Select,Jquery Select2,使用以下代码 $('select.my-select').select2().on('select2:opening', function (event) { console.log(event, this); }); 记录的元素是“原始”DOM元素。但我如何获得它的替换/表示?我说的是带有select2-results选项的类 我正在使用最新的select2测试版,目前是4.0.0 beta 3。 谢谢如果我是对的,中的s与原始中的s顺序相同 因此,您可以选择,然后通过它的子对象,得到相

使用以下代码

$('select.my-select').select2().on('select2:opening', function (event) {
  console.log(event, this);
});
记录的元素是“原始”DOM元素。但我如何获得它的替换/表示?我说的是带有select2-results选项的类

我正在使用最新的select2测试版,目前是4.0.0 beta 3。 谢谢

如果我是对的,中的s与原始中的s顺序相同

因此,您可以选择,然后通过它的子对象,得到相应的``

试试这个:

$('select.my-select').select2().on('select2:opening', function (event) {
    var $select = $(this);
    $('.select2-results__options > li').each(function(i) {
        var option = $('option:nth-child('+i+')',$select);
        console.log($(option).val());
    });
});
附言:我现在不能测试,但如果你提供小提琴,它可以测试

或者,如果您想设置结果的样式,请尝试此代码此代码适用于select2 3.5.1,但我认为它也适用于4.0:

$('#myselect').select2({
    data: categories,
    allowClear: true,
    formatResultCssClass: function(obj) {
        if (obj.disabled) { return 'select2-item-cat-parent'; }
        else { return 'select2-item-cat'; }
    }
});

您在该页面上有多个select2吗?@Fenitil不会同时出现。为什么?我不能只选择那个类,因为我需要做的是根据每个类对应标记的值对它们应用css更改。所以我需要同时获得两者的引用。好的,但是你已经写了你想要选择标签,而不是s。所以你想把每一个标签都和原始标签配对吗?这甚至可以工作,但它非常粗糙,谢谢你的帮助。我认为有一种干净的方法可以通过Select2API实现这一点,但可能没有。我可能会提交一个拉取请求。@kuus我不认为这是一种黑客方式。。想想看,如果select2的API中包含了这个函数,那么它不是黑客攻击,否则它就是黑客攻击?我理解你所说的,但我不认为API中应该包含所有内容,如果它可以通过几行代码实现的话。也许内部API的性能会更好,提供更干净的代码,但在我看来,性能并不重要。对不起,我没有解释清楚。我不会把这个函数放在API中,但是这个函数可以看到。我想实现这一点:基于值在s上设置样式属性。我可以使用开始事件循环所有选项,并在选项标记上设置所需的样式属性,那么上面函数中的DOM引用就足够了。在创建s的过程中,select2将复制option.style.cssText(如果有的话)。@kuus:您是否尝试过查看select2 formatresultsclass函数?我已经更新了我的答案,包括这个函数,试试它。@kuus尝试查找有关templateResult的信息,您可以在这里阅读:但是相关文档还没有找到,也许您可以尝试从select2源代码本身了解如何使用它。