Привязка предупреждений к динамически добавляемым элементам

#ruby-on-rails #sweetalert2

#ruby-on-rails #sweetalert2

Вопрос:

Оповещение о сбоях не запускается для элементов, которые я вводю в DOM.

Я использую драгоценный камень sweet alert 2 (https://github.com/nicolasblanco/sweet-alert2-rails ) в моем приложении rails 5, и оно отлично работает, пока я не добавлю элементы с js response. Я понимаю, что мне нужно привязать прослушиватели событий sweet alert, вызывая их после добавления элементов, но я не знаю как.

Где-то драгоценный камень инициализирует sweet alert и привязывает события к моим HTML-элементам с data-confirm атрибутом, превращающим их в data-sweet-alert-confirm . Я думаю, мне придется вызвать эту функцию инициализации после ввода новых элементов.

Комментарии:

1. Пожалуйста, поделитесь некоторым кодом.

Ответ №1:

В файле просмотра:

 <link href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.33.1/sweetalert2.css" rel="stylesheet" type="text/css">

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.33.1/sweetalert2.js"></script>

<div id="append_div" style="margin:20px;"></div>

<button id="add_element">Add Element</button>
  

В коде js:

 <script>
    $(document).ready(function(){

        $(document).on('click', '#add_element', function(){                    
            $(document).find('#append_div').append( 
                '<button class="_appended_btn" style="margin:10px;">Open sweet alert</button>' 
            );
        });


        $(document).on('click', '._appended_btn', function(){
            Swal.fire({     
               type: 'success',
               title: 'Your work has been done',
               showConfirmButton: false,
               timer: 1500
            })
        });

    });
</script>