我的公司有一个用ASP.NET构建的Web应用程序,他们要求我为他们已有的仪表板页面编写一个小部件。这些小部件是在运行时动态加载的自定义用户控件。我的问题是我有一些自定义的JavaScript需要在每次加载小部件时运行。
$(function ()
{
// Setup widget.
});
首次加载仪表板页面时,此功能非常有用。我的DOM就绪功能运行,一切都很好。但是,每当用户在其仪表板上移动小部件时,所有小部件都在更新面板中,并且它们都使用AJAX重新加载。 DOM ready函数在通过AJAX插入页面时不会运行。
有关如何确保在每次加载窗口小部件时都运行此代码的任何建议吗?
答案 0 :(得分:1)
我解决这个问题的方法是在最初加载时定义给定的事件出价。然后,在ajax的回调函数中取消设置这些事件,并为新创建的dom元素再次设置它们。
答案 1 :(得分:1)
你能否使用ASP.Net AJax pageLoad()函数?
说明它与$(document)的区别.Ready()here - > http://encosia.com/document-ready-and-pageload-are-not-the-same/
答案 2 :(得分:0)
您可以让每个小部件在将HTML写入DOM后调用setup函数。
答案 3 :(得分:0)
当您执行ajax调用时,返回函数执行您的设置代码
$.post(url, {/*data*/}, function() {
// return function call
// do setup code
});
编辑:
由于你没有控制权,你可以有一个拦截ajax调用的处理程序:
$(#your-widget-area).ajaxComplete(function(e, xhr, settings) {
});
您可以在此处找到文档:http://api.jquery.com/ajaxComplete/