我有一個jQuery UI頁面,工作正常。在這個頁面中,我用jquery.load()更改了一些div容器的內容,工作也很好。但是如果我加載的內容本身使用jQuery UI(以展示手風琴或對話框爲例),我需要再次在div容器中加載jQuery .js文件和css文件。要不然也不會工作:(在 - > jQuery加載(ajax)後獲取「CSS&jQuery UI」
我能做些什麼來不會再加載文件,並具有工作UI的對話框,UI的手風琴,UI的按鈕,...在重新加載DIV?
希望你明白我想告訴:)
我有一個jQuery UI頁面,工作正常。在這個頁面中,我用jquery.load()更改了一些div容器的內容,工作也很好。但是如果我加載的內容本身使用jQuery UI(以展示手風琴或對話框爲例),我需要再次在div容器中加載jQuery .js文件和css文件。要不然也不會工作:(在 - > jQuery加載(ajax)後獲取「CSS&jQuery UI」
我能做些什麼來不會再加載文件,並具有工作UI的對話框,UI的手風琴,UI的按鈕,...在重新加載DIV?
希望你明白我想告訴:)
jQuery UI依賴於jQuery框架。如果沒有jQuery本身,也不能在頁面中嵌入jQuery UI。
當您使用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();
兩次,您可以爲此添加某種測試以及其他許多功能,但這只是其基本思想。
不錯的主意!謝謝!這意味着,如果我做了一個函數initializeAll()並把所有jquery ui的東西,並調用它每次我使用.load()我不需要再次加載jquery文件?! :) 我喜歡! – MOOD
這在技術上也不是真正的jQuery的東西,它是基本的JavaScript,功能的概念,如果你不熟悉它,是你真正應該探索的東西,因爲它可以幫助你做比我們在這裏做的更多的事情(基本上只是重用碼) – Sander