如何在select2中隐藏(不删除)选项?

时间:2015-10-05 12:05:14

标签: jquery jquery-select2 jquery-select2-4

是否可以隐藏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();
});

2 个答案:

答案 0 :(得分:0)

您可以使用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();
});

如果没有效果,请尝试在循环内为每个元素进行注释或取消注释,我稍后会尝试。

答案 1 :(得分:0)

使用css代替prop

.css('display', 'none');

.css('display', 'block');