2011-10-03 26 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