我使用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();
}
});
}
});
答案 0 :(得分:1)
您正在将更改事件绑定到select标记。实际上,将插件应用于您的选择标记后会发生什么,选择标记将被隐藏并替换为' div'包含ul
和li
标记的元素。在此之后,您的选择标记不再在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) {
事件绑定。
如果有帮助,请告诉我。