2011-10-03 91 views
0

我有一个jQuery UI页面,工作正常。在这个页面中,我用jquery.load()更改了一些div容器的内容,工作也很好。但是如果我加载的内容本身使用jQuery UI(以展示手风琴或对话框为例),我需要再次在div容器中加载jQuery .js文件和css文件。要不然也不会工作:(在 - > jQuery加载(ajax)后获取“CSS&jQuery UI”

我能做些什么来不会再加载文件,并具有工作UI的对话框,UI的手风琴,UI的按钮,...在重新加载DIV?

希望你明白我想告诉:)

回答

0

jQuery UI依赖于jQuery框架。如果没有jQuery本身,也不能在页面中嵌入jQuery UI。

0

当您使用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的,datepickers,手风琴,按钮或其他的所有元素一样...

请记住,这是一个非常基本的想法,为了更加灵活,您可以添加其他功能,为了不在相同元素上初始化.button();两次,您可以为此添加某种测试以及其他许多功能,但这只是其基本思想。

+0

不错的主意!谢谢!这意味着,如果我做了一个函数initializeAll()并把所有jquery ui的东西,并调用它每次我使用.load()我不需要再次加载jquery文件?! :) 我喜欢! – MOOD

+0

这在技术上也不是真正的jQuery的东西,它是基本的JavaScript,功能的概念,如果你不熟悉它,是你真正应该探索的东西,因为它可以帮助你做比我们在这里做的更多的事情(基本上只是重用码) – Sander