在ajax回调之后的$(document).ready在ascx页面中

时间:2009-05-12 17:39:23

标签: jquery asp.net-mvc ajax user-controls actionlink

我在这个设置方面遇到了一些问题我有一个.ascx文件列表,它们在计算控制器本身方面都做了不同的任务。因此,在我的.aspx页面上,我点击Ajax.ActionLink(),这将根据我点击的项目呈现该特定.ascx文件。在.ascx内,有1-3个事件将触发其中2个onclick个事件,1个为onloadonclick事件更容易使用,因为我可以直接在控件事件中对其进行硬编码,例如onclick="$("#toggleMe3").slideToggle("slow");",而onload必须在.ascx时运行已加载我在$(document).ready(function(){});调用中对此进行了测试,这在.aspx页面中正常工作,但是当我尝试将其添加到.aspx页面时,它无法加载并且是理想的这有效,但我不知道为什么不。实际上,如果我直接插入到.ascx页面中,只有在硬编码到控件的事件中时,脚本标签中的任何内容都不起作用,至少其中一些是这样; onloadonprerender不会触发。

3 个答案:

答案 0 :(得分:1)

我在通过XHR加载的部分中使用$(document).ready成功了。您通过XHR加载的视图是否会抛出JavaScript异常?或者它们是否包含格式错误的HTML?

我通常在我的部分底部有我的$(document).ready方法,我通过Ajax加载,就像......

<script type="text/javascript">
$(document).ready(function(){ callMyFunction(); });
</script>

答案 1 :(得分:1)

我很难理解你的问题......但现在就这样了。

如果您使用AJAX调用加载日期,$(document).ready()事件将不会触发 - 因为页面已经加载。您现在只是加载更多数据。

如果您已经知道控件的内容,请预先加载JavaScript,但不要只使用click事件处理程序进行绑定,而是使用实时处理程序。

所以

$("#myControl").click(....);

变成

 $("#myControl").live("click", ....);

很抱歉,如果这不是你想要的。

答案 2 :(得分:1)

在$(document).ready中指定的部分回发脚本未执行后,我遇到了同样的问题。我在这里找到了解决方案MSDN - PageRequestManager Class

看起来像添加如下脚本修复了问题

<script type="text/javascript">
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myReadyFunction);
</script>