【问题标题】:load js file after dom changes in rails app在rails应用程序中的dom更改后加载js文件
【发布时间】:2016-11-20 06:30:50
【问题描述】:

我正在使用活跃的 amdin gem 来构建管理界面。我猜活动管理员在内部使用 formtastic 来构建表单。

在我的表单中,我有一个添加附件按钮,用于添加每个附件。 但我想为添加的每个附件编号。所以我在一个单独的文件 mycustomjs.js 中按如下方式实现了它

$(document).ready(function(){
  $('.has_many_add').on('click', function(){
    if($(this).prev(".has_many_fields").length == 0)
    {
        count = 0
    }
    $(this).prev(".has_many_fields").prepend("<div>"+count++ +"</div>") 
  });   

    $('.has_many_remove').on('click', function(){
    if($(this).parent(".has_many_fields").length)
    {
        count--;
    }

  });

});

但问题是 onclick 事件在附件元素插入表单之前触发。因此,在第一次点击时,它不会找到类 .has_many_fields 的元素,因此不会插入数字。

第二次点击后它工作正常。 那么有没有办法在插入附件dom元素之后才执行这个脚本??

请找到被渲染的 DOM 元素的附件。

【问题讨论】:

    标签: ruby-on-rails activeadmin formtastic


    【解决方案1】:

    这是未经测试的蝙蝠,校长应该可以工作:

    $(document).ready(function(){
      $(document).on('has_many_add:after', function(e, fieldset){
        # reimplement your code
      });   
    
      $(document).on('has_many_remove:after', function(){
        # reimplement your code
      });
    });
    

    也许你找到更多帮助完整代码here

    【讨论】:

    • 感谢@Timo Schilling。我不知道我们可以在使用 :after 方法加载特定 DOM 部分后附加事件
    • 不,你误解了,'has_many_xxxx:after' 是由活动管理员 js github.com/activeadmin/activeadmin/blob/… 触发的事件
    猜你喜欢
    • 1970-01-01
    • 2022-10-17
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 2018-06-30
    • 2014-04-05
    相关资源
    最近更新 更多