我正在使用Cocoon gem在Rails 4中的表单中创建嵌套对象。 点击"添加嵌套元素",$(' .js_slider')。如果在click()函数内调用,则length返回n-1而不是n。
partial _nested_element_fields.html.slim
.nested-fields
= f.input :name
= f.input :description
= f.hidden_field :importance, :class => "js_importance_input"
.js_slider
= link_to_remove_association "Remove nested", f
查看form.slim.html
= f.simple_fields_for :nested_elements do |f|
.factors_container
= render :partial => "nested_fields", :locals => {:f => f}
.links
= link_to_add_association "Add Nested", f, :nested_elements, :class => "js_add_nested_elements"
javascript slider.js
$(document).ready(function(){
$('.add_fields').click(function(){
console.log($('.js_slider').length);
});
});
等待执行click函数然后获取正确数量的.js_slider元素的最佳方法是什么?
答案 0 :(得分:0)
Cocoon
提供了几个您可以订阅的JS事件:
cocoon:before-insert
:在插入新的嵌套子项之前调用cocoon:after-insert
:插入后调用cocoon:before-remove
:在删除嵌套子项之前调用cocoon:after-remove
:删除后调用您可能需要cocoon:after-insert
:
$('#surrounding_element').on('cocoon:after-insert', function(e, insertedItem) {
console.log($('.js_slider').length);
});
请参阅自述文件Callbacks (upon insert and remove of items)
的部分。