我正在使用Jquery modal pop-up用于多个屏幕(比如屏幕1 - 6),它不仅适用于屏幕3,而是适用于其余屏幕 我有3个布局页面:Layout1,Layout2和Layout3。 每个.cshtml页面都有Layout作为Layout3.Layout3的布局页面为Layout2,而Layout2又使用Layout1。
每次单击按钮(单独显示在所有6个屏幕中)时,将调用“DeleteListByID()”并显示弹出窗口
模态弹出窗口的代码,以及JavaScript和CSS文件都在Layout3中
<script src="../../Scripts/ModalPopUp/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../../Scripts/ModalPopUp/jquery-ui-1.8.20.custom.min.js" type="text/javascript"></script>
<link href="../../Content/jquery-ui-1.8.20.custom.css" rel="stylesheet" type="text/css" />
function DeleteListByID(controller, action, id) {
$("#DeleteRecord").dialog({ autoOpen: false, modal: true, closeText: "", resizable: false });
//some code
}
<div id="DeleteRecord" class="DN">
<p>
'@Constants.Global.LayoutForWorkflow.DELETE_RECORD_MESSAGE'
</p>
</div>
但是在一个屏幕(屏幕3)上,它给出了一个错误,说“对象不支持此属性或方法”。 基本上,它找不到方法'对话'。有人可以告诉我为什么会这样吗??
单个屏幕中没有包含任何文件。所有内容都在Layout3中。
答案 0 :(得分:2)
我遇到了同样的问题。查看源代码并搜索对“jQuery”的任何引用。我在页面底部找到了一个引用。我自己也包含了脚本参考。
显然,由于Nuget包或项目设置本身,有以下内容:
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
这将呈现对jQuery的第二个脚本引用。第二次引用JQuery导致错误。
删除这两行,你应该好好去。
答案 1 :(得分:1)
您是否尝试确保该功能仅在文档就绪时运行?可能是.NET的AJAX怪异意味着当JavaScript试图运行时不会加载该元素。
$(document).ready(function() {
function DeleteListByID(controller, action, id) {
$("#DeleteRecord").dialog({ autoOpen: false, modal: true, closeText: "", resizable: false });
//some code
}
})
答案 2 :(得分:0)
您没有提及您的事件处理,但是如果您的点击事件功能是
$(".button").click(function(){
// stuff to do
});
试
$(".button").live("click", function() {
// stuff to do
});
答案 3 :(得分:0)
我的问题,在MVC 4上,是没有包含jQuery UI文件。添加
@Scripts.Render("~/bundles/jqueryui")
进入我的(_Layout.cshtml)文件修复它。
编辑:还需要jQuery CSS
@Styles.Render("~/Content/themes/base/css")