0

所以...我在这里有一个网站...

jQuery 对话框正在向此处发送 ajax 请求。

当您到达页面时,会自动弹出一个窗口。请忽略那个。

当你点击这张图片...
在此处输入图像描述

与此函数调用相关联...

$(function() {
    $("#compliance").dialog({
        autoOpen: true,
        modal: true,
        width: 750,
        height: 'auto',
        show: 'fade',
        hide: 'fade',
        position: {my: "center top", at:"center top", of: window },
        buttons: {
            "Dismiss": function() {
                $(this).dialog("close");
            }
        }
    });
    $(".dialogify").on("click", function(e) {
        e.preventDefault();
        $("#compliance").html("");
        $("#compliance").dialog("option", "title", "Loading...").dialog("open");
        $("#compliance").load(this.href, function() {
            $(this).dialog("option", "title", $(this).find("h1").text());
            $(this).find("h1").remove();
    });
    });
});

或者这个...
在此处输入图像描述

与此功能相关联...

$(function() {
    $("#switch").dialog({
        autoOpen: false,
        modal: true,
        width: 750,
        height: 'auto',
        show: 'fade',
        hide: 'fade',
        position: {my: "center top", at:"center top", of: window },
        buttons: {
            "Dismiss": function() {
                $(this).dialog("close");
            }
        }
    });
    $(".dialogify").on("click", function(e) {
        e.preventDefault();
        $("#switch").html("");
        $("#switch").dialog("option", "title", "Loading...").dialog("open");
        $("#switch").load(this.href, function() {
            $(this).dialog("option", "title", $(this).find("h1").text());
            $(this).find("h1").remove();
    });
    });
});

...一个模态出现。但似乎出现了两种模式。不透明的背景比应有的要暗。而且,当您关闭第一个时,随着背景变得更亮,还有另一个。

为什么是这样?我每个人只有一个函数调用。

4

1 回答 1

2

好吧,您有两个显示对话框的事件处理程序,它们都由相同的操作触发(单击 any .dialogify)。所以两个处理程序都试图处理两个 .dialogify元素的点击;单击任何一个都会导致两个对话框出现(尽管它们加载相同的内容,因为this.href每个单击目标都是唯一的)。alert("a")您可以通过在您的第一个处理程序和第二个处理程序中放置一个来确认这一点alert("b")

取而代之的是,只需使用一个选择器来唯一标识每个事件的点击目标,问题就会得到解决。

于 2013-09-19T21:05:23.730 回答