Hide/Show 选择2

Hide/Show Select2

我想隐藏或显示我的 select2,但我在 API 中找不到方法。我正在使用一种解决方法,隐藏父级,如下所示:

$(document).on('change', '.country', function () {
    if ($(this).val() == $(this).data('current-countryCode')) {
        $('#states').parent().show();
    }
    else {
        $('#states').parent().hide();
    }
});

但我想知道是否有人可以提供帮助,或者 API 中是否存在这样的方法。

我做了类似的事情,但是我隐藏了 select2 容器,它总是从起点开始的下一个节点,所以它看起来像。

$(document).on('change', '.country', function () {
    if ($(this).val() == $(this).data('current-countryCode')) {
        $('#states').next(".select2-container").show();
    }
    else {
        $('#states').next(".select2-container").hide();
    }
});

所以我一直采用与您相同的方法

另一种解决方法 – 您可以在创建时向 select2 对象添加 class

$("#user-box").select2({
    containerCssClass : "show-hide"
});

...然后在需要时使用

隐藏它
$(".show-hide").parent().parent().hide();

问题是您必须隐藏所有与 select2 下拉列表关联的项目(插件生成的所有项目以执行此操作)。

我使用包含 select2 下拉列表的 div 和 show/hide 这个 div.

解决了问题

这对我有用..

jQuery("#my-select2").select2().next().hide();

通过扩展 $.fn 更容易

    $.fn.toggleSelect2 = function(state) {
        return this.each(function() {
            $.fn[state ? 'show' : 'hide'].apply($(this).next('.select2-container'));
        });
    };

然后简单地在 select 元素上调用它。

$('select').toggleSelect2(true); //Show

$('select').toggleSelect2(false); //hide

将 Select2 放入 div。在这种情况下,我只是将 div #select 声明为 Select2:

$('#select').select2();

<div id='select_parent'><div id='select'></div></div>

Show/hide div 包含 Select2:

$('#select_parent').hide();

我的解决方法是先销毁 select2 然后隐藏 select

  $("#select").select2('destroy');
  $("#select").attr('style','display: none');

为了再次显示它,我删除了显示:none 并重新创建了 select2

$("#select").attr('style', '');
$("#select").select2();

Obs:确保在重新创建时使用与 select2 相同的配置,或者使用 data-* 属性。