我有一个动态加载内容的页面。根据用户单击的菜单项,使用jquery动态加载和显示不同的表。
每个表的一列都有一个更新链接,用于更新特定行所代表的内容。单击该链接时,将显示一个JQuery UI模式对话框,其中包含从服务器加载的表单,用户应在该服务器中更新内容并回发。
这就是我理解的方式,如果我错了,请纠正我。我需要在加载动态内容的同时加载jquery脚本,以便绑定javascript函数和正在加载的元素之间的事件。
假设我的假设是正确的,每次用户选择不同的表时,我都会加载内容和相同的JQuery UI Dialog脚本。我从与主索引文件一起加载的不同javascript函数中加载内容和jquery文件。
结果是不可预测的行为(可能使用相同的用例可预测)。当多次加载表并更新某些内容以便显示模态对话框时,在第一次或第二次使用后,对话框不再显示,作为一个示例。
jquery脚本多次加载会有问题吗?如果是的话,我应该为这种应用使用什么原则或模式。如果以上都是错误的假设,那么,设计这种解决方案的原则是什么,在不同类型的动态内容被加载到多个地方(都在同一个索引文件中)并且都需要相同的jquery文件。
答案 0 :(得分:4)
答案 1 :(得分:3)
如果我理解正确,您就会问如何在动态生成的内容上绑定事件。事实上,您不必在新内容的同时加载新脚本,以便能够将事件挂钩到所述内容。
你想要的是jQuery 'live'处理程序。您可以使用标准jQuery选择器指定绑定的目标。但是,而不是以下语法:
$('.foo').click(function(){ });
你会用
$('.foo').live('click', (function(){ });
这种方式的工作方式是通过事件冒泡,其中在子元素(例如输入框)上调用的事件在所有父节点上“冒泡”。在这种情况下,jQuery只是查看整个文档中的事件气泡,然后根据您的特定选择器条件进行匹配。
答案 2 :(得分:1)
如果我理解正确的话:
1)多个表,每行都有一个更新链接,以更新其内容。
2)更新按钮打开一个带有表单的模式框。
3)发布表单并在服务器处理完数据后检索数据以提供相关的表行。
如果上面描述的流程是正确的,我不明白为什么你应该多次加载jQuery或jQuery ui。
您应该执行类似
的操作1)加载包含所需脚本的页面。
2)使用jquery .ajax()方法设置和调用ajax(doc)
3)使用ajax调用将表单数据提交给服务器并检索结果
4)使用.ajax()的成功回调来为包含更新数据的行提供信息。在成功方法中,您应该能够检索上下文(例如,您单击的链接)并标识您单击的实际行。
我希望我有道理。
如果您需要创建新行,那么您应该考虑检查jQuery的.live()和.delegate()方法。
祝你好运。