清除并刷新jQuery选择下拉列表


72

我正在尝试清除jQuery选择下拉列表并刷新它。

HTML:

<select data-placeholder="Select Picture..." class="chosen-select" style="width:250px;" id="picturegallery" tabindex="2">
    <option value="" selected="selected"></option>
    <option value="x">remove me</option>
</select>

当我单击“刷新”按钮时,它应变为:

<select data-placeholder="Select Picture..." class="chosen-select" style="width:250px;" id="picturegallery" tabindex="2">
    <option value="1">test</option>
</select>

我试过的

$("#refreshgallery").click(function(){
    $('#picturegallery').empty();
    var newOption = $('<option value="1">test</option>');
    $('#picturegallery').append(newOption);
});

但是我无法更新下拉列表...有帮助吗?:)


1
您的DOM代码准备好了吗?
Tushar Gupta-curioustushar

2
是的(简短评论,随机文本)
plexcell

Answers:


170

使用.trigger("chosen:updated");可以在附加后更新选项列表。

动态更新选择的内容: 如果需要更新选择字段中的选项并希望选择的内容来接受更改,则需要在该字段上触发“ chosen:updated”事件。选择的内容将根据更新的内容重新构建。

您的代码:

$("#refreshgallery").click(function(){
        $('#picturegallery').empty(); //remove all child nodes
        var newOption = $('<option value="1">test</option>');
        $('#picturegallery').append(newOption);
        $('#picturegallery').trigger("chosen:updated");
    });

4
是的... .html()破坏了所选的组合。
Todd Vance 2014年

4
谢谢,我正在搜索此解决方案
logudotcom 2014年

2
您拯救了我的生命:)
Zied R.

1
如果这对我不起作用。试试这个:$('#picturegallery')。trigger(“ liszt:updated”);
Nhan Tran

7

如果trigger("chosen:updated");不起作用,使用.trigger("liszt:updated");@Nhan Tran可以正常工作。


1
请仅使用“答案”来回答问题。要批评或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦拥有足够的声誉,您就可以在任何帖子中发表评论。同时,请不要使用答案发表评论。
蒂姆·迪克曼

@TimDiekmann这个答案对我来说更有用,但是你说他犯了一个错误。在这里,我们正在寻找与Facebook / Instagram /其他社交媒体不同的答案,而不是发布和评论。ca Michel=>谢谢。
Silambarasan RD

2
$("#idofBtn").click(function(){
        $('#idofdropdown').empty(); //remove all child nodes
        var newOption = $('<option value="1">test</option>');
        $('#idofdropdown').append(newOption);
        $('#idofdropdown').trigger("chosen:updated");
    });

1
请花一点时间,描述一下此代码如何解决该问题。
31piy

0

MVC 4:

    function Cargar_BS(bs) {
        $.getJSON('@Url.Action("GetBienServicio", "MonitoreoAdministracion")',
                        {
                            id: bs
                        },
                        function (d) {
                            $("#txtIdItem").empty().append('<option value="">-Seleccione-</option>');
                            $.each(d, function (idx, item) {
                                jQuery("<option/>").text(item.C_DescBs).attr("value", item.C_CodBs).appendTo("#txtIdItem");
                            })
                            $('#txtIdItem').trigger("chosen:updated");
                        });
    }

0

就我而言,我需要在每次更改时更新选定的值,因为提交表单时,它总是会得到错误的值,并且我使用了多个选定的下拉列表。更改选择器以更新所有下拉列表,而不是更新单个条目。这可能会帮助某人

 $(".chosen-select").chosen().change(function () {
    var item = $(this).val();
    $('.chosen-select').trigger('chosen:updated');
});

0

如果万一trigger("chosen:updated");对您不起作用。您可以尝试$('#ddl').trigger('change');以我的方式为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.