zoukankan      html  css  js  c++  java
  • BootStrap-select插件动态添加option无法显示

    问题描述: 

       在使用bootstrap-select插件时出现下拉框无法显示动态追加的option,经过查看element元素发现,select标签已经append进去了所需的option选项,但是页面就是无法显示,经过源码分析发现,bootstrap在对select初始化渲染后,会在ul标签中追加li标签属性,而此时无法显示动态追加的option便是因为此li标签中没有值。因为在动态对select进行动态后没有进行重新进行渲染,导致ul标签下的li没有将append的option渲染进去,至此不能正常显示。

    源码分析:

    <div class="form-group">
            <label class="control-label">下拉框:</label>
            <select class="selectpicker form-control" id="selector" name="selector">
                  <option></option>
            </select>
    </div>
    
    
    
    
    
    $.ajax({
        url:'######',
        type:'POST',
        success:function (data) {
    
            $.each(data, function (index, item) {
                $("#selector").append("<option value='"+data[index].id+"'>"+data[index].name+"</option>");
            });
         
    
            //使用refresh方法更新UI以匹配新状态。
            $('#selector').selectpicker('refresh');
            //render方法强制重新渲染引导程序 - 选择ui。
            $('#selector').selectpicker('render');
        
        }
    
    });
    

      

    解决办法:

       注意js中最后两行,缺一不可;

     //使用refresh方法更新UI以匹配新状态。
     $('#selector').selectpicker('refresh');
     //render方法强制重新渲染引导程序 - 选择ui。
     $('#selector').selectpicker('render');

    refresh对select进行最新状态个更新后,在使用render方法对ul标签进行重新渲染,由此动态append的option值也会追加到ul标签中。
  • 相关阅读:
    插件式编程之使用反射分离MDI的父窗口和子窗口
    我总结的三层结构之一:Model示例
    我总结的三层结构之二:IDAL示例
    02.08 代理模式
    02.09 装饰模式
    块元素、行元素容纳规则
    CSS继承选择器与包含选择器的比较
    02.07 适配器模式
    02.10 桥模式
    匿名方法
  • 原文地址:https://www.cnblogs.com/staticking/p/10504584.html
Copyright © 2011-2022 走看看