对话框弹出窗口不起作用

时间:2014-07-17 14:47:42

标签: c# javascript jquery asp.net-mvc

点击链接后,我尝试在弹出窗口(对话框)中打开一个视图,但我找不到问题:

以下是我的JS代码:

<script type="text/javascript">
$.ajaxSetup({ cache: false });

$(document).ready(function () {
    $(".openDialog").on("click", "a", function (e) {
        e.preventDefault();

        $("<div></div>")
            .addClass("dialog")
            .attr("id", $(this).attr("data-dialog-id"))
            .appendTo("body")
            .dialog({
                title: $(this).attr("data-dialog-title"),
                close: function () {
                    $(this).remove();},
                modal: true,
                height: 500,
                width: 700
            })
            .load(this.href);
    });

    $(".close").on("click", "a", function (e) {
        e.preventDefault();
        $(this).closest(".dialog").dialog("close");
    });
});

</script>

这是我在同一视图中的链接:

@Html.ActionLink("Exports",
                 "List",
                 new { id = Model.Orga_Id },
                 new {
                 @class = "openDialog",
                 data_dialog_id="exportDialog",
                 data_dialog_title="Tous les exports"
                })

所有代码都属于此视图,并且我想在对话框中显示的视图代码位于同一个Controller中。 当我点击链接时,我的导航只会像<a href="#"..></a>

一样更改页面

你能看到这里有什么问题吗?您需要更多信息吗?

3 个答案:

答案 0 :(得分:2)

我相信你的问题是你的点击处理程序。

$(".openDialog").on("click", "a", function (e) {

您的ActionLink是一个A标签。您正在使用的javascript将单击添加到锚标记,该锚标记是具有.openDialog类的对象的子标记。但是锚是具有.openDialog类的对象,例如没有子锚点来附加点击处理程序。

尝试

    $(".openDialog").on("click", function (e) {

有关更详细的示例,请参阅.on()的JQuery文档,

http://api.jquery.com/on/

答案 1 :(得分:0)

更改您的代码,如下所示

 $(".openDialog").on("click", function (e) {
    e.preventDefault();

    $("<div></div>")
        .addClass("dialog")
        .attr("id", $(this).attr("data-dialog-id"))
        .appendTo("body")
        .dialog({
            title: $(this).attr("data-dialog-title"),
            close: function () {
                $(this).remove();},
            modal: true,
            height: 500,
            width: 700
        })
        .load(this.href);
});

答案 2 :(得分:0)

也许尝试.live方法而不是.on

类似

('.openDialog').live('click', function (e) {

这解决了我最近遇到的类似问题,因为我对JS / jQuery相对较新