如何使用 jquery 在不丢失样式和插件(select2)的情况下刷新 div

Posted

技术标签:

【中文标题】如何使用 jquery 在不丢失样式和插件(select2)的情况下刷新 div【英文标题】:How to refresh a div without losing the style and plugin (select2) using jquery 【发布时间】:2021-08-15 09:43:48 【问题描述】:

html 中,我试图在下面重新加载这个 div;

           <select name="test[]" id="test" multiple required
                   class="select2">
               @foreach($tests as $s)
                     <option value=" $s->id "  ( in_array($s->id, $tests) ) ? 'selected="selected"' : '' >
                              $s->value 
                      </option>
                @endforeach
           </select>

我正在使用脚本重新加载内容,但失去了 div 的 select2 功能 这是我用来刷新标签的sn-p

 $( "#test12" ).load(window.location.href + " #test" );

【问题讨论】:

$('#test12').trigger('change'); 根据official docs 这能回答你的问题吗? how to refresh Select2 dropdown menu after ajax loading different content? 它刷新了 div 但不显示更新后的列表以及创建的新内容@Tithira 【参考方案1】:

您需要在每次刷新 div 元素后重新启动 select2 插件。

因为一旦你在你的选择标签上调用 .select2(),select2 就会通过脚本绑定,并且每当你刷新你的选择标签所在的 div 元素时,绑定将被删除,并且它将成为正常的默认选择下拉菜单。所以要再次绑定它,你必须重新绑定它。

您可以尝试这些方法。 $("#test").select2(); 要么 $("#test").select2("refresh");

【讨论】:

【参考方案2】:

不过我是新来的;所有这些都不适合我。

我必须获取$( "#test12" ) 的值并将新创建的对象从端点推送到$( "#test12" ) 值。您现在将拥有所有更新的数据。

【讨论】:

以上是关于如何使用 jquery 在不丢失样式和插件(select2)的情况下刷新 div的主要内容,如果未能解决你的问题,请参考以下文章

在不丢失 Html 样式的情况下更改 NSAttributedString 中的字体大小 - Swift

如何在不使用 jquery 插件的情况下快速跳转到下一部分?

如何在不使用插件的情况下将 jQuery 1.5.1 升级到 3.0

在 jquery 插件中仅更改一种选择样式

如何使用 jQuery 在 IE 中附加样式表?

如何在不刷新页面加载的情况下保留 jQuery 和 Bootstrap 功能?