javascript - 触发器和打开问题。事件不会触发 on 方法

标签 javascript jquery

基本上我想在单击 .show-modal 时触发“modal:show”事件,但是当我触发该事件时没有得到任何响应。我尝试了许多不同的实现,但无法得到正确的结果。

$(".modal").on("modal:show", function (event) {
    onShowModal(event.id);
});

function onShowModal(modalId) {
    let $modal = $("#" + modalId);

    $modalBlack.fadeIn("slow", function () {
        $modal.fadeIn("fast", function () {
            $modal.trigger("modal:showing", { id: modalId });
        });
    });
}

$(".show-modal").click(function (event) {
    let modalId = $(this).data("modal-id");

    event.preventDefault();

    $(".modal").trigger("modal:show", { id: modalId });
});

最佳答案

为了让您的代码正常工作,我必须进行一些修改。试试这个:

<div class="modal">Generate my own HTML</div>
<div class="show-modal" data-modal-id="randomId">Make a button</div>
<div class="randomId" >Toggle, toggle.</div>
<script>
$(".modal").on("modal:show", function (event, idObj) {
    // The trick here is that the first parameter is the event.
    // The second parameter is the object that you send in on the 
    // triggering call. ($(".modal").trigger...)
    onShowModal(idObj);
});

function onShowModal(idObj) {
    let $modal = $("#" + idObj.id);
    // Don't forget to go into the object and get the Id.
    // I don't have modalBlack so my code broke at this point. 
    $modalBlack.fadeIn("slow", function () {
        $modal.fadeIn("fast", function () {
            $modal.trigger("modal:showing", { id: modalId });
            // modalId is probably going to be idObj.id.
        });
    });
}

$(".show-modal").click(function (event) {
    let modalId = $(this).data("modal-id");

    event.preventDefault();

    $(".modal").trigger("modal:show", { id: modalId });
     // Notice that you are sending this as an object {id:modalId}.
});
</script>

关于javascript - 触发器和打开问题。事件不会触发 on 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841414/

相关文章:

javascript - Jquery:计算xml中的节点分离

javascript - 在 Safari 上使用 Jquery 获取被点击的元素

javascript - 线性分区,完美图片库

javascript - 如何在 javascript 中返回延迟方法的值

javascript - 为什么单击按钮时我的黑色覆盖层没有出现?

javascript - 选择 li 元素内的文本,而不是 childs?

jquery - 如何使用 jQuery 取消按钮的提交

javascript - window.onload 返回一个函数

javascript - 使用 Math.random() 获得通常排除的上限的几率

javascript - 无法将 animatescrollTop 与 jscrollpane 一起使用?