Некоторое содержимое отображается с помощью ajax для визуализации в div в виде лайтбокса, который закрывается, когда пользователь нажимает снаружи (этот контент удаляется в этот момент):
Каждый раз, когда пользователь нажимает на целевой div,некоторый контент поступает на этот контроллер:
контроллер:
def ajax_load
// some code
end
И, наконец, эта функция js вызывается из контроллера:
ajax_load.js.erb
<% if @variable %> // embedded variable
$(target_div).html("<%= j render 'path' %>");
$('.some_div').on('click', '#target_element', function(e) {
e.preventDefault();
$("input#element_0").mask("00/00"); // works only once
$("#element_1").prop('checked','checked'); // works
$("#element_2").show(); // works
});
<% end %>
Внутри этого лайтбокса у меня есть несколько входов, и эта функция jquery mask вызывается, и она действительно работает, когда я открываю этот элемент один раз на странице, но если закрыть лайтбокс и вызвать его снова, это неи другие строки этой функции нажатия продолжают работать, например, «прыгает» функция маски.
Если я попытаюсь заставить эту маску работать напрямую с консоли браузера после того, как она перестала работать, она не изменится.
Obs: Я также провел несколько тестов на консоли браузера:
После того, как строки этого кода уже были загружены из файла js, единственный способ заставить это работать на консоли браузера - это немного изменить путь jquery:
$(".previous_div input#element_0").mask("00/00");
и чтобы заставить его работать снова, нам нужно изменить немного больше:
$("body .previous_div input#element_0").mask("00/00");