Javascript 所选jquery在重新生成内容时失败
我通过ajax在我的计算机上生成内容。第一次通过ajax加载s-all是好的,并且正确地触发了选择,即使我在其中预加载了内容。 但是如果我第二次生成s,我就不能被选中开火 下面是一个JSFIDLE,向您展示我的意思: 第一次就开始,一切都很好。 但再次点击它,选择将恢复为旧的非选择样式 有人能帮我重置插件,让它每次都能正确启动吗 使用所选版本:1.87更改您的代码:Javascript 所选jquery在重新生成内容时失败,javascript,jquery,jquery-plugins,jquery-chosen,Javascript,Jquery,Jquery Plugins,Jquery Chosen,我通过ajax在我的计算机上生成内容。第一次通过ajax加载s-all是好的,并且正确地触发了选择,即使我在其中预加载了内容。 但是如果我第二次生成s,我就不能被选中开火 下面是一个JSFIDLE,向您展示我的意思: 第一次就开始,一切都很好。 但再次点击它,选择将恢复为旧的非选择样式 有人能帮我重置插件,让它每次都能正确启动吗 使用所选版本:1.87更改您的代码: $("#trigger").click(function(){ $("#myselect").show().html('&
$("#trigger").click(function(){
$("#myselect").show().html('<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>');
$('#myselect_chosen').remove();
$("#myselect").chosen({rtl: true, allow_single_deselect: true});
})
致:
您可以看到这种工作方式,即随后按下Go now键可正确渲染所选组件
您不需要调用来显示只显示元素的对象,并且您的remove语句正在使实例化的所选对象无效。您可以尝试以下操作吗 $trigger.clickfunction{ var Select=$'myselect'; 选择。查找“选项”。删除。结束; 选择。追加'1'; 选择。追加'2'; 选择。追加'3'; 选择。追加'4'; Select.val.trigger'selected:updated'; Select.selected{rtl:true,allow\u single\u deselect:true}; } @进口urlhttps://harvesthq.github.io/chosen/chosen.css; 我的选择{ 宽度:150px; }
jQuery版本才是真正的罪魁祸首——并且没有必要破坏以前的实例 它是这样工作的,在jQuery的更高版本中:
var vals = ...; //read old selected options values, add new ones
$(select).val(vals);
$(select).trigger("chosen:updated");
应用程序中的问题位于以下代码行:
$('#myselect_chosen').remove();
实际上,在第一次触发“单击”功能后,您将删除“多选”选项,而不是将其置于静止状态,以便所选选项在此之后不再工作
如果您在github上阅读了所选的jQuery插件,您将发现这个简单的方法可以修复您的问题,并在每次触发时重置所选的插件:
摧毁选定的
要销毁所选内容并恢复为本机内容,请执行以下操作:
$form_field.chosendestroy
现在,您的javascript代码应该是:
$("#trigger").click(function(){
$("#myselect").show().html('<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>');
$('#myselect').chosen("destroy");
$("#myselect").chosen({rtl: true, allow_single_deselect: true});
})
您可以从中尝试。谢谢。你能证实这一点吗?我的例子是使用版本3.3.1。你用的是什么版本?看起来很管用。似乎对于较旧的jQuery代码有效?您正在谈论哪个jQuery版本?您似乎正在使用1.11我的示例是3.3+您正在使用的所选库支持jQuery:1.7+
$("#trigger").click(function(){
$("#myselect").show().html('<option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option>');
$('#myselect').chosen("destroy");
$("#myselect").chosen({rtl: true, allow_single_deselect: true});
})