Преобразование некоторых RJS и прототипа кода в чистый JQuery - PullRequest
0 голосов
/ 23 мая 2011

Итак, из этого 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 Ответ

0 голосов
/ 23 мая 2011

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

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

...