使用Chosen插件更改动态添加选择的事件

时间:2015-03-10 21:49:04

标签: javascript jquery jquery-chosen

我正在使用我网站上的Chosen插件,到目前为止,它一直运行良好。但是,我处于这样一种情况:我动态添加了一个选择并激活了这些选择上的Chosen插件。这些选择的选择正在生产中,但我无法弄清楚如何将click事件绑定到元素。 Chosen提供了这个($("#form_field").chosen().change( … );)作为在change事件上做某事的方法,但是,由于我的select是动态添加的,所以这不起作用。

我也尝试了$('#el').change$(document).on("change", "#el", function()),但没有取得任何成功。

2 个答案:

答案 0 :(得分:3)

原始答案: 来自http://harvesthq.github.io/chosen/#change-update-events

"如果您需要更新选择字段中的选项并希望选择接收更改,则需要触发选择的选项:已更新"在球场上的事件。 Chosen将根据更新的内容重新构建自己。"

$("#form_field").trigger("chosen:updated");

...所以在添加新元素后调用它。

编辑: 在审核了这个http://jsfiddle.net/amindunited/reh5p0tg/3/之后 我可以看到问题是第二个选择的change()侦听器在该选择被添加到页面之前被附加。 我已经更新了小提琴代码:

http://jsfiddle.net/amindunited/reh5p0tg/4/

答案 1 :(得分:1)

修改

使其工作的另一种方法是将所有内容填充到init函数中:

function init_new_content(){
  $("#form_field").chosen();
}
init_new_content();

然后在您知道自己做出更改时(例如在ajax上)调用它

$.ajax({...},
            success: function( data){
                     init_new_content();
            },
...