Как выполнить функцию JavaScript на динамически создаваемом событии нажатия кнопки.

0

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

имена файлов загружаются динамически с помощью Php

<tbody>
               <?php
                    foreach ($uploaded_files as $val) {
                        ?>
                        <tr>
                            <th>
                                <a href="delete_this_file/<?php echo $val['id']; ?>" class="delete" data-confirm="Are you sure to delete this item?"><div class="btn btn-danger">Delete</div></a>
                            </th>
                            <th>
                                <?php echo $val['file_name']; ?>
                            </th>
                        </tr>
                        <?php
                    }
                    ?>
                </tbody>

и у меня есть функция javascript в разделе html head, вроде этого, чтобы подтвердить, действительно ли он хочет ее удалить.

$(document).ready(function() {
                        var deleteLink = document.querySelector('.delete');
                        deleteLink.addEventListener('click', function(event) {
                            event.preventDefault();

                            var choice = confirm(this.getAttribute('data-confirm'));

                            if (choice) {
                                window.location.href = this.getAttribute('href');
                            }
                        });
                    });

это хорошо работает только для первой кнопки, а для других кнопок она перенаправляется на эту ссылку href= "delete_this_file/

может кто-нибудь покажет мне ошибку в этом коде. Я не могу понять.

Большое спасибо

  • 4
    Можете ли вы объяснить разницу между «работать хорошо» и «перенаправление»?
  • 0
    работать хорошо означает, что он дает это окно подтверждения перед перенаправлением на удаление контроллера. в другом случае он перенаправляет без предоставления этого окна подтверждения. :)
Показать ещё 6 комментариев

2 ответа

3
Лучший ответ

Взгляните на эту ссылку: https://api.jquery.com/on/

метод on свяжет события с динамически создаваемыми объектами

$(document).on("click", ".delete", function() {
    //your code here
});

Когда вы используете обычный addEventListener, он связывает его только с текущими соответствующими элементами в DOM, любой соответствующий элемент, созданный после этой точки, не будет привязан

  • 1
    Дополнительная информация о «делегировании»: api.jquery.com/on/#direct-and-delegated-events
  • 0
    Благодарю вас, миссис Шей Элкаям и мистер Веритас87, с вашей помощью, я могу сделать это правильно. еще раз спасибо
0
<tbody>
               <?php
                    foreach ($uploaded_files as $val) {
                        ?>
                        <tr>
                            <th>
                                <a style="cursor:pointer" onclick="deleteFun(<?php echo $val['id']; ?>)" class="delete"><div class="btn btn-danger">Delete</div></a>
                            </th>
                            <th>
                                <?php echo $val['file_name']; ?>
                            </th>
                        </tr>
                        <?php
                    }
                    ?>
                </tbody>
    <script>
    function deleteFun(id){

    var choice = confirm("Are you sure to delete this item?");

       if (choice) {
           window.location.href = "delete_this_file/"+id;
       }
    }

    <script>

просто попробуйте это, более сведенный к минимуму ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню