获取“CSS 和 CSS” jQuery UI”之后-> jQuery 加载(ajax)

发布于 2024-12-07 18:11:37 字数 272 浏览 0 评论 0原文

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

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

希望你明白我想告诉你的:)

I have a page with jQuery UI, working fine. Within this page I change the content of some div containers with jquery.load(), works fine too. But if the content which I load uses jQuery UI by itself (to show a accordion or a dialog as an example), I need to load the jQuery .js files and the css file again in the div container. Else it won't work :(

What can I do to not load the files again AND having a working ui-dialog, ui-accordion, ui-buttons, ... in the reloaded div?

Hope you understand what I wanted to tell :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小…楫夜泊 2024-12-14 18:11:37

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

jQuery UI relies on the jQuery framework. You cannot have jQuery UI embedded in a page without having jQuery itself as well.

淡淡的优雅 2024-12-14 18:11:37

例如,当您使用 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(); 两次,您也可以为此添加某种测试以及许多其他内容,但这只是它的基本思想。

when you use jquery ui buttons for example you initialize them trough a certain call like this:

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

now, lets say you load a big piece of your page trough ajax load, jquery.load() or any other means (for all i know you could be manually creating new DOM nodes on the fly after certain button clicks)

the only thing you would do here is wrap your piece of code in a function

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

and wherever you have an ajax load you can call this function in your callback. like so:

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

now do the same with all elements of jquery ui you use, datepickers, accordions, buttons or other...

please keep in mind, that this is a very basic idea, for more flexibility you can add other features, in order not to initialize .button(); on the same element twice you could add some sort of test for that too, and many other things, but this is just the basic idea of it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文