2011-10-03 3 views
0

잘 작동하는 jQuery UI가있는 페이지가 있습니다. 이 페이지에서 jquery.load()를 사용하여 div 컨테이너의 내용을 변경 했으므로 제대로 작동합니다. 그러나 내가로드하는 컨텐츠가 jQuery UI를 사용하는 경우 (예 : 아코디언 또는 대화 상자를 표시하는 경우) div 컨테이너에 jQuery .js 파일과 CSS 파일을 다시로드해야합니다. 그렇지 않으면 작동하지 않습니다 :(-> jQuery load (ajax) 후 "CSS 및 jQuery UI"가져 오기

다시 파일을로드하고 작업의 UI 대화 상자의 UI 아코디언, UI-버튼을 가지고 있지 위해 무엇을 할 수 있는지 ... 다시로드 된 사업부에서?

희망을 이해하고 싶습니다.

답변

0

jQuery UI는 jQuery 프레임 워크를 사용합니다. jQuery 자체가 없어도 페이지에 jQuery UI를 임베드 할 수 없다. 당신은 예를 들어 JQuery와 UI 버튼을 사용할 때

0

당신이 그들과 같은 특정 전화 여물 초기화 : 지금

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

을, 당신이 당신의 페이지 저점 아약스 부하의 큰 조각을로드 말할 수, jquery.load() 또는 (난 당신이 수동으로 특정 버튼을 클릭 한 후 즉석에서 새로운 DOM 노드를 만들 수 있습니다 알고있는 모두를위한) 다른 방법은

당신이 여기에서 할 것이다 유일한 함수의 코드 당신의 조각을 포장입니다

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

당신은 당신의 콜백에서이 함수를 호출 할 수 있습니다. 과 같이 : 이것은 매우 기본적인 생각이다

$('#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 물건입니다. 기본 자바 스크립트입니다. 익숙하지 않은 함수의 개념은 실제로 탐색해야하는 것입니다. 여기에서했던 것보다 훨씬 많은 작업을 수행 할 수 있습니다. (기본적으로 재사용하고 있습니다. 암호) – Sander