【发布时间】:2020-11-08 19:18:41
【问题描述】:
我有一个页面,在初始加载时会调用各种 jQuery(select2、'onclick' 等)。这是我的 Rails 应用程序中的远程 JS 表单。如果提交失败,我会让页面重新加载表单,以便用户更正验证等。
问题是所有初始 jQuery 调用都不会在重新加载的内容上持续存在(通过 .html() 调用)。
我发现了一些这样的帖子:
Reinitialize jQuery after AJAX call
我已经修复了大多数这样的原始调用,现在可以正常工作了:
$(document).on('keyup', 'input.item_quantity', function(event){
my code etc...
});
我还有其他类似的问题,我似乎无法解决:
$(function() {
$('[data-behavior="select2-parent"]').select2({
ajax: {
url: 'myurl',
dataType: 'json'
}
});
});
这些都是对文档加载的调用,而不是由于用户交互。当用户单击输入时,我可以进行这些加载,但是在用户单击和 select2 启动之间会有一点延迟。即使我通过 .html() 重新加载内容,我也需要保持这种状态。
在控制台中重新加载后直接调用它:
$('[data-behavior="select2-parent"]').select2();
我将此添加到调用我的 .html() 但 select2 未初始化且没有控制台错误的代码中。
这些 select2 调用如何绑定到初始元素和之后添加的元素?我怀疑我可能在这里遗漏了一些小的或明显的东西。
编辑: select2 AJAX 配置中的 URL 也是基于其他表单输入值的动态。
【问题讨论】:
-
嗨,丹,我的回答对你有用吗?
-
它已经足够接近可以接受了。在我的情况下,我只需要再次调用
select2即可重新初始化。 -
很高兴你能成功
标签: javascript jquery jquery-select2