使用jquery模式弹出窗口时,错误'对象不支持此属性或方法'

时间:2012-07-06 11:21:20

标签: jquery asp.net-mvc-3 modal-popup

我正在使用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中。

4 个答案:

答案 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")