2014-09-30 54 views
1

我目前正在开发一个需要我在ASP.NET中使用MVC概念的项目。我试图从Event.cshtml页面加载特定内容到Detail.cshtml中的特定div。我已成功将内容加载到指定页面上。然而,问题是我无法操纵加载的内容。用Jquery操作加载的内容。 MVC ASP.NET

我对Event.cshtml此代码: http://pastebin.com/B4bxfjZt

我已经此代码Detail.cshtml作为位置内制得,其中将内容加载:

<div class="lightbox" border="0" style="text-align: center; background-color:white; border-radius: 10px;" > 
    <div class="contents"></div> 

</div> 

在的Detail.cshtml底部我有这jquery加载欲望的内容和地址:

<script> 
    $(document).ready(function(){ 



     $(".contents").load('/Prime/Event/2014-2849?url=project .form'); 

     $(window).load(function() { 
      hideContacts(); 
      $("#eventdate").datepicker(); 
      $('#starttime').timepicker({ 
       'step': 15, 
       'minTime': '06:00 AM', 
       'maxTime': '10:00 PM', 
       'timeFormat': 'h:i A', 
       'scrollDefaultTime': '12:00 PM' 
      }); 
      $('.lightbox').bPopup(
      { 
       position: [40,120], 
      } 
      ); 

     }); 

     alert('about to hit' + ("#sbt")); 
     ("#sbt").click(function(e){ 

      alert('I was clicked!'); 
     }); 

    }); 

</script> 

问题是#eventdate,#starttime是不可操纵的。我一直在这个问题上停留一周。

我将不胜感激任何帮助或见解。

+0

能否请你解释一下你的代码是应该做的?特别是'load'事件的预期顺序是异步的,可能会在'$(window).load'后面结束:) – 2014-09-30 14:57:06

+0

$(window).load确保弹出窗口只在窗口完全加载时才会发生。加载jquery时执行文档准备就绪时不一定完全加载。我使用这种情况来防止在其他项目中尽早执行该功能,并且它运行良好。另外,我禁用窗口加载,并没有做出任何不同,为什么我不能操纵加载的内容。 – 2014-09-30 14:59:22

+0

当然,删除'$(window).load'会有所作为......它会让情况更糟*。如果您的'#eventdate'元素位于加载的表单中,则它正试图在表单加载之前连接处理程序。我会恢复我以前的答案。 – 2014-09-30 15:01:35

回答

0

如果您期望,您将不会收到window.load事件。您还缺少一个$$("#sbt").

使用在load()回调:

$(document).ready(function() { 
     $(".contents").load('/Prime/Event/2014-2849?url=project .form', function() { 
      // Do this stuff only after `load` completes 
      hideContacts(); 
      $("#eventdate").datepicker(); 
      $('#starttime').timepicker({ 
       'step': 15, 
        'minTime': '06:00 AM', 
        'maxTime': '10:00 PM', 
        'timeFormat': 'h:i A', 
        'scrollDefaultTime': '12:00 PM' 
      }); 
      $('.lightbox').bPopup({ 
       position: [40, 120], 
      }); 
      // Moved this inside the load event handler 
      alert('about to hit' + ("#sbt")); 
      $("#sbt").click(function (e) { 
       alert('I was clicked!'); 
      }); 
     }); 
    }); 
+0

窗口加载用于确保只有在所有内容完成加载后才会执行操作。我在其他任务中使用了类似的结构,并且效果很好。 – 2014-09-30 14:54:19

+0

我按照你的编辑我的代码。这里的主要问题是#eventdate,#starttime,#sbt这些都是Event.cshtml的id标记,我将它们加载到Detail.cshtml中,但我无法操作它们 – 2014-09-30 15:23:45

+0

请将您的* latest/current *代码到JSFiddle中,以便我可以检查错误/拼写错误/问题。 – 2014-09-30 15:26:58