$(document).ready in ascx page after ajax callback

时间秒杀一切 提交于 2019-12-10 05:44:59

问题


I'm having a little problem with this setup here I have a list of .ascx files and they all do different tasks in terms of calculations to the controller itself. So on my .aspx page I click on an Ajax.ActionLink() and this will render that specific .ascx file based on the item I clicked. Within that .ascx are 1-3 events that will fire 2 of them are onclick events and 1 is onload. The onclick event(s) are easier to work with in terms of I can hardcode it directly in the controls event like so onclick="$("#toggleMe3").slideToggle("slow");" and the onload must run when the .ascx is loaded i was testing this in a $(document).ready(function(){}); call, this works fine in the .aspx page but as soon as I try adding it into the .aspx page it doesn't load and its ideal that this works but I have no idea why not. In fact nothing in the script tags work if I insert directly into the .ascx page they only work if hardcoded into the control's events, well some of them at least; the onload and onprerender don't fire.


回答1:


I had the same problem, after partial postback script specified in $(document).ready was not executed. I found solution here MSDN - PageRequestManager Class

Looks like adding a script like below fixes the issue

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



回答2:


I've had success using $(document).ready in my partials that get loaded via XHR. Are the views that you're loading via XHR throwing JavaScript exceptions? Or do they contain malformed HTML?

I typically have my $(document).ready method at the bottom of my partial that I load via Ajax, like...

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



回答3:


I had a hard time understanding your question...but here it goes.

If you are loading date using AJAX calls, the $(document).ready() event will not fire -- because the page was already loaded. You are just loading more data now.

If you already know the controls what will apear, pre-load the JavaScript, but instead of just binding using the click event handler, use the live handler.

so

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

turns into

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

Sorry if this isn't what you were looking for.



来源:https://stackoverflow.com/questions/853955/document-ready-in-ascx-page-after-ajax-callback

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!