javascript - 动态填充 Bootstrap 选择器 : change event doesn't work

标签 javascript jquery twitter-bootstrap-3

我有一个 Bootstrap Select 选择器,我必须在它加载后创建并动态添加到页面的 HTML 中。问题是,当我这样做时,选择器的“更改”事件似乎没有被触发。

这是我的 jsFiddle:http://jsfiddle.net/83k458Lz/7/

(最终,下拉列表中的数据将通过 JSON 加载,但在示例中我已将其内联添加)。

代码在这里:

//The jsFiddle has a much more complete list of data
var lista_pueblos=[{"id":"2","nombre":"Madrid"},{"id":"4","nombre":"Barcelona"},{"id":"5","nombre":"Heidelberg"},{"id":"6","nombre":"Dusseldorf"}];

var dropdown='<select id="localidad_origen_1" name="localidad_origen_1" class="form-control selectpicker input-sm localidad_origen" data-live-search="true" required><option value="" selected disabled>Seleccione localidad</option></select>';

$("#formulario").after(dropdown);


rellenaPueblos($("#localidad_origen_1"), -1);
$('.selectpicker').selectpicker();
$('.selectpicker').refresh();    



$("body").on('change',".localidad_origen, .localidad_destino", function(){
    alert("Meeept");   
   });


function rellenaPueblos(dd, pueblo_anterior) {
        var cadena="";
        var elProximoEsElBueno=false;
        for (var i = 0; i < lista_pueblos.length; i++) {
            if (elProximoEsElBueno == true) {
                cadena += "<option SELECTED value='" + lista_pueblos[i]["id"] + "'>" + lista_pueblos[i]["nombre"] + "</option>\n";
                elProximoEsElBueno = false;
                }
            else {
                cadena += "<option value='" + lista_pueblos[i]["id"] + "'>" + lista_pueblos[i]["nombre"] + "</option>\n";
                }
            if (lista_pueblos[i]["id"] == pueblo_anterior) {
                elProximoEsElBueno=true;
                }
            }
        //alert(dd.name);
        dd.append(cadena);
        }    

而且 HTML 非常简单:

<form id="formulario">
</form>

如您所见,下拉列表已正确填充,但当我选择一个选项时,似乎没有触发“更改”事件。我读过有关事件委托(delegate)的内容,但如您所见,事件处理程序附加到 body。利用事件冒泡。

我还缺少什么?我怀疑这一定是非常愚蠢的事情......

最佳答案

改变这个:

$('.selectpicker').refresh(); 

对此:

$('.selectpicker').selectpicker('refresh');

调用不存在的 refresh() 方法阻止了剩余代码的执行。

更正的 fiddle :http://jsfiddle.net/BenjaminRay/83k458Lz/11/

关于javascript - 动态填充 Bootstrap 选择器 : change event doesn't work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29417410/

相关文章:

javascript - 使用 slidetoggle() 隐藏特定高度的 div

javascript - Chrome页面刷新问题

javascript - Codeigniter:在进入 Controller 之前验证数据

javascript - 如何在单击下一个按钮之前等待 SlideToggle 完成

html - Bootstrap 网格覆盖缩放

php - 如何创建 yii2 内联复选框列表

javascript - 如何生成 jQuery 片段

javascript - jquery和wordpress在浏览器一定宽度时隐藏元素

javascript - 无法修改滚动速度

css - Bootstrap 3 将文本对齐到 Div 的底部