2016-11-20 38 views
0

我正在使用活動的amdin gem來構建管理界面。我猜想主動管理員在內部使用formtastic來構建表單。在rails應用程序中更改dom後加載js文件

在我的表單中,我有一個添加附件按鈕,它添加了每個附件。 但我想給編號添加每個附件。所以我作爲一個單獨的文件如下已實施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元素的附件。

回答

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

+0

謝謝@Timo Schilling。我不知道我們可以在加載特定的DOM部分後附加事件:方法 – rubyist

+0

不,你誤解了'has_many_xxxx:after'是由活動管理員js發起的事件https://github.com/activeadmin/activeadmin/斑點/ d01155f73a0e2cc27d712792270357e2b3759d05 /應用程序/資產/ Javascript角/ active_admin/LIB/has_many.js.coffee#L2-L22 –

相關問題