我正在使用AJAX使用Ruby on Rails 5.3渲染javascript局部函数。渲染完成后,如何使用javascript / jquery引用其中已渲染的元素?
我有各种形式的部分内容,这些形式的部分内容显示在页脚中存储的单个元素中。以前,我在表单部分的底部引用了一些javascript来初始化模式。
我现在想拥有两种不同类型的模态,并可能同时打开两种模态。创建第二个模式包装器后,我现在需要弄清楚如何初始化正确的模式(我可以在一个模式中打开一个模式,因此必须避免重新初始化一个已经打开的模式)。
任何帮助都会很棒!谢谢大家。
我使用以下代码渲染部分:这些部分是作为不同的请求单独出现的。
$('#modal_partial_normal').html('<%= escape_javascript(render('form1')) %>');
$('#modal_partial_footer').html('<%= escape_javascript(render('form2')) %>');
初始化模态的JS 遵循Materialize here的文档。
$("#modal_partial_footer").modal("open");
和HTML:
<div id="form_modal_wrap">
<div id="modal_partial_footer" class="modal bottom-sheet modal-fixed-footer">
... partial rendered here ...
</div>
<div id="modal_partial_normal" class="modal modal-fixed-footer">
... partial rendered here ...
</div>
</div>
JS正在为单一类型的模态工作,但是我目前将每个模态都渲染为“页脚”模态类型,因此我只在对模态部分进行任何渲染之后才触发它。我希望能够将某些渲染为页脚,而另一些渲染为普通模态。我需要从页脚模态中打开普通模态。
我正在尝试弄清楚模态何时渲染并初始化正确的类型-即页脚或普通类型。
检查AJAX请求是否成功完成,一次触发一次,但是我无法确定它已呈现在哪个元素中。
$('a[data-remote="true"]').on("ajax:success", function(evt, xhr, settings){
console.log("AJAX request successful");
});
识别DOM树的更改不起作用,因为它触发得太频繁并且初始化失败,尽管它确实让我知道了其中部分渲染的元素。
$("footer").on('DOMSubtreeModified', "*[id^='modal_partial']", function() { ... });