【问题标题】:Getting "CSS & jQuery UI" after -> jQuery load (ajax)在 -> jQuery 加载 (ajax) 之后获取“CSS & jQuery UI”
【发布时间】:2011-10-03 22:45:39
【问题描述】:

我有一个带有 jQ​​uery UI 的页面,工作正常。在此页面中,我使用 jquery.load() 更改了一些 div 容器的内容,也可以正常工作。但是如果我加载的内容本身使用 jQuery UI(以显示手风琴或对话框为例),我需要在 div 容器中再次加载 jQuery .js 文件和 css 文件。否则将无法正常工作:(

我该怎么做才能不再加载文件并且在重新加载的 div 中有一个工作的 ui-dialog、ui-accordion、ui-buttons...?

希望你能理解我想说的:)

【问题讨论】:

    标签: jquery ajax load reload


    【解决方案1】:

    jQuery UI 依赖于 jQuery 框架。如果没有 jQuery 本身,您就无法将 jQuery UI 嵌入到页面中。

    【讨论】:

      【解决方案2】:

      例如,当您使用 jquery ui 按钮时,您可以通过如下调用来初始化它们:

      $( ".button" ).button({ parameters });
      

      现在,假设您通过 ajax 加载、jquery.load() 或任何其他方式加载了大部分页面(据我所知,您可以在单击某些按钮后即时手动创建新的 DOM 节点)

      您在这里唯一要做的就是将您的一段代码包装在一个函数中

      function initializeButtons(container){
          container = (typeof(container)==="undefined") ? $('body') : container;
          $( '.button', container ).button({ parameters });
      }
      

      无论您有 ajax 负载,您都可以在回调中调用此函数。像这样:

      $('#mydiv').load("/mypath/mydata.html", function(){
          // content is loaded, now init the buttons
          initializeButtons($('#mydiv'));
      });
      

      现在对您使用的 jquery ui 的所有元素、日期选择器、手风琴、按钮或其他元素执行相同操作...

      请记住,这是一个非常基本的想法,为了获得更大的灵活性,您可以添加其他功能,为了不在同一元素上初始化 .button(); 两次,您也可以为此添加某种测试,并且还有很多其他的东西,但这只是它的基本思想。

      【讨论】:

      • 好主意!谢谢!这意味着,如果我创建了一个函数 initializeAll() 并放入所有 jquery ui 内容,并在每次使用 .load() 时调用它,我就不需要再次加载 jquery 文件了?! :) 我喜欢!
      • 这在技术上也不是真正的 jquery 东西,它是基本的 javascript,如果你不熟悉函数的概念,你真的应该探索一下,因为它比我们所做的更能帮助你这里(基本上只是重用代码)
      猜你喜欢
      • 2012-03-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2011-10-26
      相关资源
      最近更新 更多