【发布时间】:2013-02-04 17:46:46
【问题描述】:
我这样称呼一些 jQuery UI 函数:
jQuery(document).ready(function(){
jQuery(".accordion").accordion();
});
但是我的页面是基于 AJAX 的,有些页面可能使用手风琴,有些可能不使用它。有 30 多个其他功能需要重新附加,这是一个有问题的开发任务。有什么聪明的方法可以解决这个问题,让每个新的.accordion 都能自动附加这个问题?
可能的解决方案及其不起作用的原因:
- 在 AJAX 调用完成时触发文档就绪是理想的,但这是不可能的
- 拥有
load()不是一种选择,因为它是一个用户可以安装插件的CMS - 这意味着插件仅使用jQuery(document).ready();添加的未知功能数量未知 - 在
ajaxComplete上重新附加函数 - 对于未知数量的未知函数,每次安装或卸载 jQuery 插件时如果不修改 AJAX 脚本,这将无法正常工作
【问题讨论】:
-
您正在构建单页 web 应用程序吗?你考虑过像 Backbone 这样的框架吗?
-
小心调用
$(".accordion").accordion()多次,因为插件不必正确处理同一元素上的多次初始化。为了安全起见,我建议仅限制对新内容的调用,例如$("#newContent .accordion").accordion()
标签: javascript jquery ajax jquery-ui