Rails 4 / Turbolinks / jQuery: событие keydown не запускается на вновь вставленном элементе?

Я на Rails 4 использую гем jquery-turbolinks. У меня есть ссылка, которая при нажатии добавит поле ввода в DOM с помощью jQuery:

$(".add_color").html("<input id='add_color_text_field' type='text' name='color' placeholder='Provide a color name'>");

Однако jQuery в моем application.js не запускает этот недавно сгенерированный ввод:

    $(function() {


        $('#add_color_text_field').keydown(function(e) {
            alert("here");
        });

       ...

Это работает, когда я изменяю селектор, чтобы указать уже существующее поле ввода при начальной загрузке страницы, поэтому я уверен, что он работает. Что мне нужно изменить в моем jQuery, чтобы мой недавно сгенерированный элемент DOM работал с турболинками?

1 ответ

Решение

Вы можете использовать jquery-turbolinks драгоценный камень Легко устанавливается:

Gemfile:

gem 'jquery-turbolinks'

бежать bundle install и отредактируйте манифест Javascript:

//= require jquery
//= require jquery.turbolinks
//
// ... your other scripts here ...

и должен решить вашу проблему.

Пожалуйста, прочтите примечание о привязке к $(document) в конце страницы github (не связывать внутри $(function () {...}); так как эти события будут выполняться несколько раз).

Другие вопросы по тегам