Bootstrap-Select不会改变

时间:2016-03-26 18:43:23

标签: jquery html bootstrap-select

我使用http://silviomoreto.github.io/bootstrap-select/examples/作为我的自定义选择框。内容已经加载了JQuery。如果我更改选择框,则不会更新包含其内容的按钮。我试过$('select').selectpicker(); 管理这个问题,但它不起作用。 你有解决方案吗?

$('select#item').on("change", function ()
    {
        var intID = parseInt($('select#item').val());

        if (intID > 0)
        {
            $.post(_this.strAjaxUrl, {
                'action': 'getAction',
                'intID': intID
            }, function (strResponse)
            {
                var jsonDaten = $.parseJSON(strResponse);
                if (jsonDaten.strStatus == "OK")
                {
                    $('select#item2').html(jsonDaten.strHtml);
                    $('select#item2').selectpicker();
                }
            });
        }
    });

1 个答案:

答案 0 :(得分:1)

您正在将更改事件绑定到select标记。实际上,将插件应用于您的选择标记后会发生什么,选择标记将被隐藏并替换为' div'包含ulli标记的元素。在此之后,您的选择标记不再在UI上,其隐藏。因此,您的更改事件永远不会出现(因为您不再使用select标签)。如果您查看插件文档,就会发现event名为changed.bs.select。的 Take a look here

因此,您必须实际使用插件提供的事件来触发更改事件。所以使用像

这样的东西
$('select#item').on('changed.bs.select', function (e) {
  // get new data to the select Tag.
});

这里棘手的部分是,你可以更新select标签,但请记住这个select标签是隐藏的。因此,您可能无法在UI上看到更改。

当你想用新数据更新select标签时,解决方案是销毁插件,使用$('select#item').selectpicker('destroy');应用新的html。然后重新应用插件。另请记住,您还必须重新应用$('select#item').on('changed.bs.select', function (e) {事件绑定。

如果有帮助,请告诉我。