加载动态“选择”选择元素
我正在使用所选的jQuery插件(由Harvest)。 它在(document).ready上运行正常,但我有一个按钮,当单击它时,使用ajax动态创建更多选择对象,我想使用“选择”function。 但是,只有原始选择元素具有“选定”function,而新(动态创建)function不起作用。 我正在使用jQuery.get来追加新元素。 以下是代码示例:
jQuery(".select").chosen();//this one loads correctly jQuery("#add-stage").click(function() { jQuery.get('/myurl',{},function(response) { //response contains html with 2 more select elements with 'select' class jQuery('#stages').append(response); jQuery(".select").chosen();//this one doesn't seem to do anything :-( }); });
我在想某个地方需要一个.live()函数,但我还没弄清楚。 任何帮助深表感谢!
注意 – 我没有尝试动态加载新选项,如文档中使用 trigger("liszt:updated");
确保response
元素具有select
类。
console.log( response ); // to verify
将插件应用于新元素也是一个好主意。
jQuery(".select").chosen(); jQuery("#add-stage").click(function() { jQuery.get('/myurl',{},function(response) { console.log( response ); // verify the response var $response = $(response); // create the elements $response.filter('.select').chosen(); // apply to top level elems $response.find('.select').chosen(); // apply to nested elems $response.appendTo('#stages'); }); });
此外,如果/myurl
返回整个HTML文档,您可能会得到不可预测的结果。
编码后(填写选择).write this
$(".select").trigger("chosen:updated");
我和Chosen有类似的问题。 我试图在用户点击链接后动态添加新的选择。 我克隆了之前的选择,然后添加了克隆,但选择的选项不起作用。 解决方案是剥离Chosen类并添加元素,将克隆放入DOM中,然后再次运行:
clonedSelect.find('select').removeClass('chzndone').css({'display':'block'}).removeAttr('id').next('div').remove(); mySelect.after(clonedSelect); clonedSelect.find('select').chosen();
使用ajax选择的一种方法:
$.ajax({ url: url, type: 'GET', dataType: 'json', cache: false, data: search }).done(function(data){ $.each(data, function(){ $('', {value: this.value, text: this.text}).appendTo(selectObj); }); chosenObj.trigger('liszt:updated'); });
其中selectObj是特定的选择对象
但……
选择实施非常糟糕。 它有几个视觉错误,例如:选择一些选项,然后开始搜索新选项,然后删除选中并继续输入 – 您将获得’选择一些选项’扩展,如’选择一些选项搜索值’。 它不支持JQuery链接。 如果您将尝试实施AJAX,您会注意到,当您松开所选择的焦点时,输入的文本将消失,现在当您再次单击时,它将显示一些值。 您可以尝试删除这些值,但这将是一个艰难的时期,因为您不能使用’blur’事件,因为它在选择某些值时也会触发。 我建议不要选择使用,特别是使用AJAX。
1.-下载Livequery插件并从您的页面调用它。
2.-释放Kraken: $(".select").livequery(function() { $(this).chosen({}); });
这是选中每次单击Chosen时使用ajax动态加载表单数据库的新选项的示例。
$('.my_chonsen_active').chosen({ search_contains:true }); $('.my_chonsen_active').on('chosen:showing_dropdown', function(evt, params){ id_tosend=$(this).attr("id").toString(); $.get("ajax/correspondance/file.php",function(data){ $('#'+id_tosend).empty(); $('#'+id_tosend).append(data); $('#'+id_tosend).trigger("chosen:updated"); }); });
- 尝试通过AJAX提交时,%5Bobject%20Object%5D(404 not found)
- 在Magento中使用基本的AJAX调用
- 无法从JQuery ajax调用接收JSON
- 用jsonp等效于ajaxSend和/或ajaxComplete?
- 在AJAX调用中无法读取未定义的属性“setState”
- 使用Ajax和jQuery检查文件是否存在 – 始终返回200响应
- 在上传过程中,safari / chrome / opera能否发出ajax请求?
- 如何使用jQuery通过Ajax发送复选框数组的值?
- jQuery on() – 是event.delegateTarget获取on()函数主容器的最佳方法吗?