在Partial View中定义jquery ready事件

Saf*_*Ali 8 asp.net-mvc jquery partial-views document-ready domready

我在Site.Master页面中定义了一个$(document).ready()事件,我还想在我的一个局部视图中定义另一个$(document).ready()(用于显示msgs和错误消息) ,我在所有页面和所有局部视图中调用此局部视图...

局部视图显示在页面中,也使用模态弹出窗口...所以我尝试了这个但是部分视图中的ready事件没有触发

我有几件事要问:

  • 首先,有可能做我想做的事......
  • 有页面有局部视图,因此页面有两个$(document).ready()事件,所以当页面加载时,这两个事件之间是否存在任何冲突......

如果有些身体可以提供一些例子......

Pra*_*sad 5

是的,允许您$(document).ready()在一个页面中包含多个页面,只需确保在调用此函数之前已包含jquery文件即可。Functions内部$(document).ready() 调用按请求顺序进行。

jQuery-多个$(document).ready ...?


tva*_*son 5

是的,您可以在页面上包含多个就绪事件处理程序.您可以将它们放在站点主页,部分视图和视图页面中 - 尽可能多地使用它们.它们必须全部包含在脚本标记中.它们将按照它们包含在最终呈现页面中的顺序触发.注意,您要小心确保部分仅在页面上包含一次,或者如果多次调用该处理程序并不重要.

示例(未完成):

主:

 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="jqueryui.js"></script>
 <script type="text/javascript">
      $(function() {
           // do something for whole page
      });
 </script>

 @Html.Partial( "ErrorDialog" )
Run Code Online (Sandbox Code Playgroud)

部分(ErrorDialog)

 <div id="errorDialog" style="display: none;" title="Error">
     <p>An error occurred</p>
 </div>
 <script type="text/javascript">
      $(function() {
          $('#errorDialog').dialog({
             modal: true,
             autoOpen: false,
             // more options
          });
      });

      function showError(msg) {
          $('#errorDialog').find('p').html(msg)
                           .stop()
                           .dialog('open');
      }
 </script>
Run Code Online (Sandbox Code Playgroud)

  • @PinakinShah这不应该是真的,除非第一个中的某些东西是(a)失败或(b)阻止其他的运行.你可以拥有你需要的任意数量.即使它们是通过AJAX加载的,也应该如此.我有几个非常相似的页面,我将代码拆分为两个部分,根据是否存在某些模型属性而独立包含这两个部分.奇迹般有效. (2认同)