如何将JS定位到在其中呈现红宝石部分的元素?

时间:2019-01-05 15:42:26

标签: javascript jquery ruby-on-rails ruby ajax

我正在使用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() { ... });

0 个答案:

没有答案