【发布时间】:2012-10-19 19:53:39
【问题描述】:
我在我的 MVC3 应用程序中使用 Modal Popup,它工作正常,但单击链接会打开两次。
模态弹出是从我的主控制器的“索引”视图触发的。我在模态弹出窗口中调用视图PopUp.cshtml。相应视图的相关ActionMethod“PopUp”位于我的“Home”控制器中。
代码如下:
layout.cshtml页面上的Jquery代码,
<script type="text/javascript">
$.ajaxSetup({ cache: false });
$(document).ready(function () {
$(".openPopup").live("click", function (e) {
e.preventDefault();
$("<div></div><p>")
.attr("id", $(this).attr("data-dialog-id"))
.appendTo("body")
.dialog({
autoOpen: true,
title: $(this).attr("data-dialog-title"),
modal: true,
height: 250,
width: 900,
left: 0,
buttons: { "Close": function () { $(this).dialog("close"); } }
})
.load(this.href);
});
$(".close").live("click", function (e) {
e.preventDefault();
$(this).dialog("close");
});
});
</script>
'PopUp.cshtml'中的cshtml代码
@{
ViewBag.Title = "PopUp";
Layout = null;
}
<h2>PopUp</h2>
<p>
Hello this is a Modal Pop-Up
</p>
在 Home Controller 的 Index 视图中调用模态弹窗代码,
<p>
@Html.ActionLink("Click here to open modal popup", "Popup", "Home",null, new { @class = "openPopup", data_dialog_id = "popuplDialog", data_dialog_title = "PopUp" })
</p>
模态弹出窗口打开两次我做错了什么?
【问题讨论】:
-
不清楚在同一个祖先链中有多少与
.openPopup匹配的元素。事件冒泡。尝试在preventDefault()之外调用stopPropagation()(或仅从处理程序返回false)。 -
@Frédéric:它不工作我仍然关闭弹出窗口两次......
-
javascript 是否被加载了两次?我遇到了一些问题,其中两次调用了 live 命令并且事件执行了两次。
-
感谢@ChadKapatch!但我不确定它是如何被调用两次的......我什至评论了 Layout.cshtml 页面中 JQuery 代码的最后一部分。 $(".close").live("click", function (e) { e.preventDefault(); $(this).dialog("close"); });但仍然没有运气......
-
你能在 jsFiddle 中复制这个问题吗?
标签: jquery asp.net-mvc-3 events jquery-events