0

我正在为多个屏幕(例如屏幕 1 - 6)使用Jquery 模式弹出窗口,它不仅适用于屏幕 3,而且适用于其余屏幕我有 3 个布局页面:Layout1,布局 2 和布局 3。每个 .cshtml 页面的 Layout 为 Layout3。Layout3 的布局页面为 Layout2,而 Layout2 又使用 Layout1。

每次单击按钮(分别出现在所有 6 个屏幕中)时,都会调用“DeleteListByID()”并显示弹出窗口

modal-pop-up 的代码,以及 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 中。

4

4 回答 4

2

我遇到了同样的问题。查看源代码并搜索对“jQuery”的任何引用。我在页面底部找到了一个参考。我自己也包含了脚本参考。

显然,由于 Nuget 包或项目设置本身,存在以下问题:

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

这呈现了对 jQuery 的第二个脚本引用。对 JQuery 的第二次引用导致了错误。

删除这两行,你应该很高兴。

于 2012-11-20T16:16:13.207 回答
1

您是否尝试过确保该功能仅在准备好的文档上运行?可能是 .NET 的 AJAX 怪异意味着当 JavaScript 尝试运行时没有加载元素。

$(document).ready(function() {

    function DeleteListByID(controller, action, id) { 
               $("#DeleteRecord").dialog({ autoOpen: false, modal: true, closeText: "", resizable: false });
              //some code
    }

})
于 2012-07-06T11:27:36.193 回答
0

你没有提到你的事件处理,但如果你的点击事件功能是

$(".button").click(function(){
    // stuff to do
});

尝试

$(".button").live("click", function() {      
    // stuff to do
});
于 2012-07-06T12:11:06.657 回答
0

在 MVC 4 上,我的问题是没有包含 jQuery UI 文件。添加

@Scripts.Render("~/bundles/jqueryui")

进入我的(_Layout.cshtml)文件修复它。

编辑:还需要 jQuery CSS

@Styles.Render("~/Content/themes/base/css")
于 2012-11-27T10:05:06.260 回答