【问题标题】:How to hide (NOT remove) option in select2?如何隐藏(不删除)select2 中的选项?
【发布时间】:2016-01-02 02:04:54
【问题描述】:
是否可以在不删除的情况下隐藏 select2 中的选项?
我当前的代码只禁用了该选项:
$('#company_id').change(function () {
var company_name = $("#company_id option:selected").text();
var $owner_id = $("#owner_id");
$owner_id.select2("destroy");
$("#owner_id option:not(:contains('(" + company_name + ")'))")
.prop('disabled',true);
$("#owner_id option:contains('(" + company_name + ")')")
.prop('disabled',false);
$owner_id.select2();
});
【问题讨论】:
标签:
jquery
jquery-select2
jquery-select2-4
【解决方案1】:
您可以使用 jQuery 注释 HTML 代码,您的代码将如下所示:
$('#company_id').change(function () {
var company_name = $("#company_id option:selected").text();
var $owner_id = $("#owner_id");
$owner_id.select2("destroy");
//Comment element
element = $("#owner_id option:not(:contains('(" + company_name + ")'))");
comment = document.createComment(element.get(0).outerHTML);
element.replaceWith(comment);
//Unomment element
$("#owner_id option:contains('(" + company_name + ")')").replaceWith(comment.nodeValue);
$owner_id.select2();
});
如果不起作用,请尝试在循环中为每个元素进行注释或取消注释,我稍后会尝试。
【解决方案2】:
使用 css 代替 prop
.css('display', 'none');
和
.css('display', 'block');