【问题标题】:defining jquery ready event in Partial View在局部视图中定义 jquery 就绪事件
【发布时间】:2011-10-21 11:27:09
【问题描述】:

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

部分视图显示在页面中,并且还使用模态弹出...所以我尝试这样做,但部分视图中的就绪事件没有触发

我有几件事要问:

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

如果某个机构可以提供一些例子......

【问题讨论】:

  • 您是否使用ajax 来加载这些部分视图?
  • 是的,我在调用/更新局部视图时使用 ajax.beginform 或 ajax.actionlink ...

标签: jquery asp.net-mvc partial-views document-ready domready


【解决方案1】:

是的,没错,只要之前的局部视图没有任何错误,您就可以拥有任意数量的 $(document).ready() 并且它会为所有人触发。

【讨论】:

    【解决方案2】:

    是的,您可以在页面上包含多个就绪事件处理程序。您可以将它们放在站点主视图、部分视图和视图页面本身中——只要您需要。它们都必须包含在脚本标签中。它们将按照它们包含在最终呈现页面中的顺序触发。请注意,您要小心确保该部分仅在页面上包含一次,或者多次调用该处理程序并不重要。

    示例(不完整):

    大师:

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

    部分(错误对话框)

     <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>
    

    【讨论】:

    • 如果有多个局部视图,这将不起作用。订单中的第一个部分视图将触发其文档准备就绪,但不会触发第二个。
    • @PinakinShah 这不应该是真的,除非第一个是(a)失败或(b)阻止其他人运行。您可以根据需要拥有任意数量。即使它们是通过 AJAX 加载的,这也应该是正确的。我有几个非常相似的页面,其中我将代码分成两个部分,这些部分根据是否存在某些模型属性而独立包含。像魅力一样工作。
    【解决方案3】:

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

    jQuery - multiple $(document).ready ...?

    【讨论】:

    • 你能给我举个例子吗,就像我说的我试过但是部分视图中的就绪事件没有触发......
    • @dvlpr:我认为是 tvanfosson 写的,如果这不能解决您的问题,请告诉我们!!
    猜你喜欢
    • 2011-07-20
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2011-02-04
    • 2016-05-31
    相关资源
    最近更新 更多