Преобразование некоторых rjs и кода прототипа в чистый jQuery

#jquery #ruby-on-rails #ruby #ruby-on-rails-3 #rjs

#jquery #ruby-on-rails #ruby #ruby-on-rails-3 #rjs

Вопрос:

Итак, из этой railscast есть следующий код для динамического добавления поля для формы вложенной модели:

Это было в вспомогательном приложении:

 def link_to_add_fields(name, f, association)
  new_object = f.object.class.reflect_on_association(association).klass.new
  fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
    render(association.to_s.singularize   "_fields", :f => builder)
  end
  link_to_function(name, h("add_fields(this, '#{association}', '#{escape_javascript(fields)}')"))
end
  

И это была функция javascript:

 function add_fields(link, association, content) {
  var new_id = new Date().getTime();
  var regexp = new RegExp("new_"   association, "g")
  $(link).parent().before(content.replace(regexp, new_id));
}
  

Теперь мне любопытно, как бы вы изменили весь этот код, чтобы вы могли полагаться исключительно на jQuery, а не на прототип или rjs.

Ответ №1:

Единственная вещь, связанная с прототипом, здесь — link_to_function call. Что он делает, так это создает onclick обработчик над вашим name текстом, который вызывает вашу add_fields функцию.

Итак, чтобы быть чистым jquery, вы должны использовать $().click (function (){...}) метод вместо этого. Однако точная реализация будет отличаться в зависимости от того, хотите ли вы вставить javascript в свой html-файл или вызвать его незаметно.