jQuery将页面加载到DIV并进入模态对话框

时间:2014-02-24 05:25:58

标签: jquery modal-dialog jquery-ui-dialog

我试图将一个页面加载到一个模态DIV中,但似乎缺少一些东西(可能明显很明显!)。这就是我所拥有的。

问题 页面不会加载到div中,而是单击链接直接进入页面

在我的 <head> 部分

<link rel="stylesheet" type="text/css" href="/css/jquery-ui-1.8.18.custom.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>
<script type="text/javascript" src="/js/load_modal.js"></script>

我的load_modal.js脚本如下所示:

$(function() {
    $("#dialog").dialog({
        autoOpen: false,
        modal: true,
        width: 600,
        height: 400,
        buttons: {
                "Close": function() {
                    $(this).dialog("close");
                }
            }
        }
    });

    $(".modal").on("click", function(e) {
        e.preventDefault();
        $("#dialog").html("");
        $("#dialog").dialog("option", "title", "Loading...").dialog("open");
        $("#dialog").load(this.href, function() {
            $(this).dialog("option", "title", $(this).find("h2").text());
            //$(this).find("h1").remove();
        });
    });
})

我试图加入模态div的链接看起来像这样

<div id="dialog"></div>
<a class="modal" href="/privacy.html">privacy policy</a>

我尝试的事情

  • 不同版本的jQuery和jQuery UI
  • 删除除event.preventDefault()之外的所有代码; - 这应该保持链接均匀加载,但页面仍然加载!

2 个答案:

答案 0 :(得分:0)

尝试使用jQuery UI在iframe中加载页面:

$(".modal").on("click", function (event) {
    event.preventDefault();
    //console.log('click'); TO CHECK IF CLICK IS DETECTED
    var iframe = $('<iframe frameborder="0" marginwidth="0" marginheight="0" width="600" height="400"></iframe>');
    var dialog = $("<div></div>").append(iframe).appendTo("body").dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    width: "auto",
    height: "auto",
    close: function () {
        iframe.attr("src", "");
        }
});
    var src = $(this).attr("href");
    iframe.attr({
        src: src
    });
    dialog.dialog("option", "title", "Your Title...").dialog("open");
});

PS:这适用于类模态的任何链接。

答案 1 :(得分:0)

首先添加一些CSS,使模态框看起来正确:

<link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">

然后,稍微修改你的load_modal.js文件:

$(document).ready(function() {
$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    width: 600,
    height: 400,
    buttons: {
            "Close": function() {
                $(this).dialog("close");
            }
        }
    });


$(".modal").on("click", function(e) {
    e.preventDefault();
    $("#dialog").html("");
    $("#dialog").dialog("option", "title", "Loading...").dialog("open");
    $("#dialog").load(this.href, function() {
        $(this).dialog("option", "title", $(this).find("h2").text());
        //$(this).find("h1").remove();
    });
  });
});