2009-11-16 3 views
0

나는 Accordion 플러그인 내부에 Galleria 플러그인을 사용하여 이미지를 매우 멋지게 표시합니다. 그러나 새 탭을 열면 (아코디언에서) 갤러리 탭으로 돌아올 때 문제가 발생합니다. 이로 인해 갤러리아가 다시 초기화되어 실패하게됩니다.jQuery deconstructors for plugins?

__deconstruct() 플러그인을 사용하여 문제가 발생하지 않고 필요할 때 다시 초기화 할 수 있는지 궁금합니다.

$('.haccordion .header').click(function() 
{ 
    /* ---- Gallery Code ---- */ 
    if ($(this).find('div').attr('title') == 'photogallery') 
    { 
     $('.gallery').galleria(); 

내가 document.load에 플러그인을 초기화 할 경우

는 플러그인을로드하지만 그것은 아주 버그입니다 (있는 탭을 열됩니다 확인하지 않고). 이미지가로드되지 않고 클릭 등을 할 수 없습니다. div.photogallery 때 플러그인을 다시로드하면 오류가 발생합니다. 로드되지 않습니다.

그래서이 문제를 극복하기위한 유일한 방법은 플러그인을 죽인 후 다시 초기화하는 것입니다.

+0

줄 4가'if ($ (this)) .find ('div')로 변경되었습니다. attr ('title') == 'photogallery'&& $ ('. galleria_container'). 길이 == 0)' 트릭을 했어. – panas

+0

예, 단순히 플러그인을 다시 초기화하지 않으면 플러그인을 다시 reinitialising하는 대신 사용할 수 있습니다. – Guffa

답변

0

플러그인을 제거 할 때의 문제점은 플러그인을 제거 할 수있는 단일 객체로 분리되지 않아서 많은 요소에 연결된 이벤트 및 스타일로 코드의 특정 부분에 퍼져 있다는 것입니다 아마도 추가 된 요소까지 포함 할 수 있습니다.

플러그인을 다시 초기화하면 코드 자체의 변경 사항을 덮어 씁니다. 이로 인해 충돌 및 기타 문제가 중복됩니다. 플러그인을 다시 활성화하려면 플러그인을 처음 초기화하기 전에 영향을받는 내용의 사본을 저장해야합니다. 그러면 플러그인을 다시 초기화하기 전에 코드의 해당 부분을 원래 상태로 복원 할 수 있습니다.

그러나 플러그인이 창 범위에 무언가를 추가하면 코드의 일부를 복원하여 복원 할 수 없습니다. 플러그인을 실행 취소 할 수 있도록 플러그인이 수행하는 작업을 찾아야합니다. 그렇지 않으면 페이지를 다시로드해야합니다.