parschakov
@parschakov
Начинающий изучать PHP и JS

Как инициализировать динамически созданный элемент?

Здравствуйте.
Средствами append() создаю новый div элемент в котором находятся раннее инициализированные плагины типа select2, summernote, но в динамически созданных элементах, эти плагины не подгружаются.
Каким образом можно сделать, чтобы старая инициализацию срабатывала на новые созданные элементы?
Спасибо!

$(document).on('click', '#addDiv', function () {
    $('#newDiv').append("<div class='summernote'></div><div class='select2'></div>");
}


Пример инициализации плагинов:
$(document).ready(function () {
        $('.summernote').summernote({
            height: null,
            lang: 'ru-RU',
            toolbar: [
                ["style", ["style"]],
                ["font", ["bold", "italic", "underline", "clear"]],
                ["fontname", ["fontname"]],
                ["color", ["color"]],
                ["para", ["ul", "ol", "paragraph"]],
                ["height", ["height"]],
                ["table", ["table"]],
                ["insert", ["link", "picture", "video", "hr"]],
                ["view", ["fullscreen", "codeview"]],
                ["help", ["help"]]
            ],
            popover: {
                image: [
                    ['custom', ['imageAttributes']],
                    ['float', ['floatLeft', 'alignCenter', 'floatRight']],
                    ['remove', ['removeMedia']]
                ],
                link: [
                    ['link', ['linkDialogShow', 'unlink']]
                ],
                air: [
                    ['color', ['color']],
                    ['font', ['bold', 'underline', 'clear']],
                    ['para', ['ul', 'paragraph']],
                    ['table', ['table']],
                    ['insert', ['link', 'picture']]
                ]
            },
            callbacks: {
                onInit: null,
                onFocus: null,
                onBlur: null,
                onEnter: null,
                onKeyup: null,
                onKeydown: null,
                onSubmit: null,
                onImageUpload: function (files) {
                    var $editor = $(this);
                    var data = new FormData();
                    data.append('file', files[0]);
                    $.ajax({
                        url: '{{ route("iup") }}',
                        method: 'POST',
                        data: data,
                        processData: false,
                        contentType: false,
                        success: function (response) {
                            $editor.summernote('insertImage', response);
                        }
                    });
                },
                onImageUploadError: null
            }
        });
}


p.s. и еще такой вопрос, а если мне нужно переинициализировать с новыми настройками плагин?
  • Вопрос задан
  • 381 просмотр
Решения вопроса 2
KickeRocK
@KickeRocK
FrontFinish
Поле аппенда "инициализируйте" плагины для этого элемента.
$(document).on('click', '#addDiv', function () {
    $('#newDiv').append("<div class='summernote'></div><div class='select2'></div>");
$('.summernote').summernote();
...
}

Если нужна настройка, конкретно под этот элемент, можете id им раздать и к ним уже вызывать и настройки делать.
$(document).on('click', '#addDiv', function () {
    $('#newDiv').append("<div class='summernote' id="summer1"></div><div class='select2' id="select2"></div>");
$('#summer1').summernote({
            height: null,
            lang: 'ru-RU',
            toolbar: [
                ["style", ["style"]],
                ["font", ["bold", "italic", "underline", "clear"]],
                ["fontname", ["fontname"]],
                ["color", ["color"]],
                ["para", ["ul", "ol", "paragraph"]],
                ["height", ["height"]],
                ["table", ["table"]],
                ["insert", ["link", "picture", "video", "hr"]],
                ["view", ["fullscreen", "codeview"]],
                ["help", ["help"]]
            ],
            popover: {
                image: [
                    ['custom', ['imageAttributes']],
                    ['float', ['floatLeft', 'alignCenter', 'floatRight']],
                    ['remove', ['removeMedia']]
                ],
                link: [
                    ['link', ['linkDialogShow', 'unlink']]
                ],
                air: [
                    ['color', ['color']],
                    ['font', ['bold', 'underline', 'clear']],
                    ['para', ['ul', 'paragraph']],
                    ['table', ['table']],
                    ['insert', ['link', 'picture']]
                ]
            },
            callbacks: {
                onInit: null,
                onFocus: null,
                onBlur: null,
                onEnter: null,
                onKeyup: null,
                onKeydown: null,
                onSubmit: null,
                onImageUpload: function (files) {
                    var $editor = $(this);
                    var data = new FormData();
                    data.append('file', files[0]);
                    $.ajax({
                        url: '{{ route("iup") }}',
                        method: 'POST',
                        data: data,
                        processData: false,
                        contentType: false,
                        success: function (response) {
                            $editor.summernote('insertImage', response);
                        }
                    });
                },
                onImageUploadError: null
            }
        });
}

UPD
Ответ написан
maximviktorovich777
@maximviktorovich777
front-end
инициализируй все плагины после создания нового узла или элемента
что касается новых настроек плагина то без кода не могу сказать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы