多次动态内容和加载JQuery脚本

时间:2011-09-02 18:51:50

标签: javascript jquery html jquery-ui cross-domain

我有一个动态加载内容的页面。根据用户单击的菜单项,使用jquery动态加载和显示不同的表。

每个表的一列都有一个更新链接,用于更新特定行所代表的内容。单击该链接时,将显示一个JQuery UI模式对话框,其中包含从服务器加载的表单,用户应在该服务器中更新内容并回发。

这就是我理解的方式,如果我错了,请纠正我。我需要在加载动态内容的同时加载jquery脚本,以便绑定javascript函数和正在加载的元素之间的事件。

假设我的假设是正确的,每次用户选择不同的表时,我都会加载内容和相同的JQuery UI Dialog脚本。我从与主索引文件一起加载的不同javascript函数中加载内容和jquery文件。

结果是不可预测的行为(可能使用相同的用例可预测)。当多次加载表并更新某些内容以便显示模态对话框时,在第一次或第二次使用后,对话框不再显示,作为一个示例。

jquery脚本多次加载会有问题吗?如果是的话,我应该为这种应用使用什么原则或模式。如果以上都是错误的假设,那么,设计这种解决方案的原则是什么,在不同类型的动态内容被加载到多个地方(都在同一个索引文件中)并且都需要相同的jquery文件。

3 个答案:

答案 0 :(得分:4)

看一下jQuery $ .live()和$ .delegate():

http://api.jquery.com/live/

http://api.jquery.com/delegate/

这些允许您将事件绑定到动态加载的内容。

答案 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()方法。

祝你好运。