Как правильно закрыть модальное окно с помощью jquery или javascript внутри внедренного HTML?

Сценарий для вызова модала, и HTML скелет для модала: (который работает)

<script>
$(document).on("click", ".addworker", function (e) {
    e.preventDefault();
    var $popup = $("#popup");
    var popup_url = $(this).data("popup-url");
    $(".modal-content", $popup).load(popup_url, function () {
        $popup.modal("show");
    });
});
</script>

<div id="popup" class="modal fade" role="dialog">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
        
        </div>
    </div>
</div>

HTML, загруженный в modal-content, возвращается представлением django, которое сидит за url. (эта часть тоже работает)

Внутри этого HTML у меня есть кнопка, которую я хочу использовать для повторного закрытия модала. Но когда модальный объект введен в HTML и открыт, кажется, что модальный объект находится вне области видимости, поэтому я попытался вернуть его обратно с помощью var $popup = $("#popup");. И я действительно получаю обратно объект, но метод $popup.modal("hide"); не работает.

<script>
    $(document).on("click", ".cancel", function (e) {
        var $popup = $("#popup");
        $popup.modal("hide");
    });
</script>

<div class="modal-header">
<h1>{{ aoe }} Worker: {{ id }}</h1>
</div>
<form action="add/" method="post">
    {% csrf_token %}
    <div class="modal-body">
    {{ form|crispy }}
    </div>
    <div class="modal-footer">
    <input type="button" class="btn btn-secondary cancel" value="Cancel">
    <input type="submit" class="btn btn-primary" value="Submit">
    </div>
</form>

Хотя закрытие модала с помощью $popup.modal().close() работает. но я не хочу этого, потому что тогда мне придется удалять много свойств css вручную. (например, фон остается серым, и я не могу ничего нажать на главной странице)

Проблема решена. Я включил JQuery в оба HTML-файла, что привело к тому, что функция перестала работать. Теперь она работает, используя $("#popup").modal('hide');

Вернуться на верх