我再次问这个问题,因为我得到了所有答案,但我仍然无法解决问题,这对我来说也很奇怪,因为有几个答案非常合乎逻辑!
我需要的?
单击图像时打开模态框,然后仅在单击图像外部时才关闭模态框。
我用什么?
Materialize 和 JQuery 和 Thymeleaf(但不应该影响任何东西)
HTML 代码:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="icon" th:href="@{/favicon_heladeria.png}" />
<link rel="stylesheet" th:href="@{/vendor/materialize/css/materialize.css}" />
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
<link rel="stylesheet" th:href="@{/app.css}" />
<h2 class="mid-title">Nuestros Helados</h2>
</div>
<div class="helados container">
<div class="row">
<div class="col s12 l4" id="chocoDiv">
<a class="modal-trigger" href="#chocolateModal">
<img class="tastes" th:src="@{/images/chocolate.png}" />
</a>
<span class="taste-name">CHOCOLATES</span>
</div>
<div class="col s12 l4">
<img class="tastes" th:src="@{/images/crema.png}" />
<a href="#"></a>
<span class="taste-name">CREMAS</span>
</div>
<div class="col s12 l4">
<img class="tastes" th:src="@{/images/dulceDeLeche.png}" />
<a href="#"></a>
<span class="taste-name">DULCE DE LECHES</span>
</div>
<div class="col s12 l4">
<img class="tastes" th:src="@{/images/frutales.png}" />
<a href="#"></a>
<span class="taste-name">FRUTALES</span>
</div>
</div>
</div>
<!-- Modal -->
<div id="chocolateModal" class="modal">
<div>
<div class="modal-content">
<h4 class="modal-title">Chocolates</h4>
</div>
</div>
</div>
<script th:src="@{/vendor/jquery/jquery-1.11.3.js}"></script>
<script th:src="@{/vendor/materialize/js/materialize.min.js}"></script>
<script th:src="@{/app.js}"></script>
</body>
</html>
我留下评论,这样你就可以看到我尝试过的其他选项而没有取得任何有用的结果:(
JS代码:
$(function(){
// Activate mobile nav
$(".button-collapse").sideNav({edge: 'right'});
});
// $(document).ready( () =>{
// $('.modal').modal();
// });
// ESTE FUE EL ÚNICO QUE ANDUVO (Pero luego no lo puedo cerrar)
//$('#chocoDiv').on('click', () => {
// $('#chocolateModal').show();
//});
document.querySelector('#chocoDiv').addEventListener('click', () => {
var element = document.querySelector('#chocolateModal');
var modal = M.Modal.init(element, {});
modal.open();
});
//$(document).ready(function(){
// $('.modal').modal();
// });
知道我可能做错了什么吗?很少有两种选择都很好用!
你不需要
#modalOut
物化模态,他们有一个选项是dismissible
. 此选项的作用是,当您在模式外部单击时,它会关闭。它的默认值为True。您可以在此处查看文档。我建议使用插件的实例。该文档还向您展示了如何做到这一点。它使您将来更容易处理事件。我给你留下一个例子,我希望这是你所需要的。干杯!
使用询问用户的代码使用选项 2 进行编辑:
这个非常重要。我认为你的部分错误是没有初始化 .modal
试试这个。
您只需指定此 id 是模态的。
根据文档打开一个 Materialize 模态窗口是:
这将是使用 Jquery 的代码,在哪里引用以通过类打开模式。您还拥有完整版:
关闭它将是:
我希望它对你有帮助。
我建议您查看文档!
文档模式
也许这对你有用:在这个例子中,单词Hello通过"Om.onclick"打开模式,Om是 P 的 Id。
它对我有用:
当您单击按钮时,您将创建一个模态实例并将带有类
.modal
和选项的 html 元素作为参数传递。然后调用该方法open()
,它应该可以工作。正如他们所说,默认情况下模式是可关闭的,这意味着当您单击外部或使用键时它将关闭ESC。
根据您的方法,它将是这样的:
有了这个,你打开模式点击图像,当你点击它外面时它会关闭。希望对你有帮助