C# 通过AJAX加载DOM就绪函数后,如何在jQuery中运行这些函数?

C# 通过AJAX加载DOM就绪函数后,如何在jQuery中运行这些函数?,c#,javascript,jquery,asp.net,ajax,C#,Javascript,Jquery,Asp.net,Ajax,我的公司有一个内置于ASP.NET的web应用程序,他们让我为他们已有的仪表板页面编写一个小部件。这些小部件是在运行时动态加载的自定义用户控件。我的问题是,每次加载小部件时都需要运行一些自定义javascript $(function () { // Setup widget. }); 当仪表板页面第一次加载时,这非常有效。我的DOM就绪函数运行正常。但是,每当用户在其仪表板上移动小部件时,所有小部件都在更新面板中,并且都使用AJAX重新加载。DOM就绪函数通过AJAX插入页面时不会运

我的公司有一个内置于ASP.NET的web应用程序,他们让我为他们已有的仪表板页面编写一个小部件。这些小部件是在运行时动态加载的自定义用户控件。我的问题是,每次加载小部件时都需要运行一些自定义javascript

$(function ()
{
    // Setup widget.
});
当仪表板页面第一次加载时,这非常有效。我的DOM就绪函数运行正常。但是,每当用户在其仪表板上移动小部件时,所有小部件都在更新面板中,并且都使用AJAX重新加载。DOM就绪函数通过AJAX插入页面时不会运行


关于如何确保每次加载小部件时都运行此代码的任何建议?

您可以让每个小部件在其HTML写入DOM后调用设置函数。

我解决此问题的方法是在最初加载时定义给定的事件出价时命名它们。然后,在ajax的回调函数中取消设置这些事件,并为新创建的dom元素重新设置它们。

在执行ajax调用时,让return函数执行设置代码

$.post(url, {/*data*/}, function() {
    // return function call
    // do setup code
});
编辑:

由于您没有控制权,因此可以使用处理程序来拦截ajax调用:

$(#your-widget-area).ajaxComplete(function(e, xhr, settings) {

});

您可以在这里找到文档:

您不能使用ASP.Net AJax pageLoad()函数吗


解释它与$(document).Ready()的区别->

这不是我要问的吗?我尝试在小部件的底部包含一个未准备好DOM的脚本。在页面加载时触发,但在通过ajax重新加载时不会再次触发。当出现回流或重画时,它不会停止“准备就绪”。在对DOM执行代码之前,您所能做的就是查询DOM以查看您的元素是否存在。我想我试图解释的是,您不能依赖于“DOM就绪”,您需要连接到其他东西。也许你可以在定时器上轮询DOM的变化,我想解释一下,我很清楚我不能依赖DOM ready。因此,问题是,我在寻找建议的替代方案,而不是我需要替代方案的事实陈述。我的问题是我无法控制小部件的加载方式。不幸的是,我只能在小部件的范围内工作。如果我能修改ajax调用,我肯定会的。啊,嗯。这很棘手。我不能说我以前试过这么做。iFrame不是一个选项吗?也许你可以让这些脚本在hover上运行而不是在load上运行?这样行吗?也许您可以让这些最初运行的函数动态地将脚本加载到页面的头部,而页面的头部又会以某种方式监听ajax重新洗牌事件?我不知道这是让一切变得容易还是困难…好主意。我将试一试。见对霍金回答的评论。听起来如果没有这种控制,我可能会完蛋。