Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 所选jquery在重新生成内容时失败_Javascript_Jquery_Jquery Plugins_Jquery Chosen - Fatal编程技术网

Javascript 所选jquery在重新生成内容时失败

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('&

我通过ajax在我的计算机上生成内容。第一次通过ajax加载s-all是好的,并且正确地触发了选择,即使我在其中预加载了内容。 但是如果我第二次生成s,我就不能被选中开火

下面是一个JSFIDLE,向您展示我的意思:

第一次就开始,一切都很好。 但再次点击它,选择将恢复为旧的非选择样式

有人能帮我重置插件,让它每次都能正确启动吗

使用所选版本:1.87更改您的代码:

$("#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});    
    })