Я спрашивал об этом в сообществе Gitter. Чтобы очистить код перед удалением элемента, вы должны прослушать событие beforeSwap.i c. Чтобы упростить его использование, я создаю функцию, вдохновленную тем, как турболинки, стимулы и неполисты справляются с этой ситуацией.
const compiler = function(selector, fn) {
Intercooler.ready(function(elt) {
let cleanupFn;
const $el = $(elt).find(selector);
if ($el.length > 0) {
cleanupFn = fn($el);
}
// Cleanup
$(document).on("beforeSwap.ic", function(e) {
const el = e.target;
//Check if the element selected is inside the element being swapped
if ($(el).find(selector).length > 0) {
if (cleanupFn) cleanupFn();
}
});
});
};
export default compiler;
И вот пример, использующий ее:
compiler("form.userForm", elt => {
const im = new Inputmask("999.999.999-99");
const inputCpf = $("input[name=cpf]")[0];
im.mask(inputCpf);
return () => {
if (inputCpf.inputmask) inputCpf.inputmask.remove();
};
});
Когда вы вызываете функция компилятора , вы передаете селектор CSS от элемента, который хотите отслеживать. Когда этот элемент попадает на страницу, он выбирается с помощью jQuery и передается в предоставленный обратный вызов.
Для очистки вы возвращаете функцию из обратного вызова, которая будет вызываться до удаления выбранного элемента.