2011-12-06 4 views
0

지난 2 시간 동안 머리카락을 꺼낸 후에도 여전히 갈등을 발견 할 수 없었습니다. 이 문제를 해결할 때 도와주세요. http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/ajaxtabs_suppliment3.htm을 사용하여 내 사이트의 아약스 탭을 만들고 또한 모달 창에 http://defunkt.io/facebox/을 사용하고 있습니다. 그러나 페이스 북 링크를 Ajax 탭을 통해로드하려고 시도하면 내용이 페이스 박스에로드되지 않습니다. 하지만 아약스 탭 바깥에있는 링크는 잘 작동합니다. 어떤 생각?jQuery facebox가 DD Ajaxtabs와 호환되지 않습니다.

답변

2

DOM에로드하는 새 콘텐츠에 이전에 설정된 이벤트 처리기가 연결되어 있지 않기 때문입니다.

그래서이 경우 페이스 북 플러그인은 새로운 내용이 아약스 탭에로드되기 전에 초기화됩니다. 그러므로 본질적으로 facebox 플러그인은 이러한 새로운 링크가 존재하는지 알지 못합니다.

답변은 새 콘텐츠가로드 된 후 플러그인을 다시 초기화하는 것입니다.

그래서 당신은 호출해야합니다 : -

$('a[rel*=facebox]').facebox() 

... 다시, 새로운 아약스 탭의 내용이 DOM에로드 된 후. 아약스 탭 스크립트에 대한 간단한 개요에서, Facebox 플러그인을 (위 그림과 같이) 다시 초기화하면 아약스 탭에 새로운 내용이로드 될 때마다 호출되는 함수에 해당 라인을 추가함으로써이 문제를 쉽게 해결할 수 있다고 상상합니다. 당신이 당신의 위치에 livequery 스크립트를 포함 일단 당신이 코드를 (사용하여 jQuery를 livequery plugin

를 사용하여 facebox 플러그인을 초기화 할 수

또는 (훨씬 더 간단하고) : -

$('a[rel*=facebox]').livequery(function() { 

$(this).facebox(); 

}); 

Livequery을 것이다 새로 추가 된 Facebox 링크가 DOM에 추가되면 자동으로 감지하여 Facebox 플러그인을 적용합니다.

EDIT :

그래도 여전히 원하는 효과가 없다면 (비록 내가 꿈을 꾸곤 했었지만 라이브 쿼리로 볼 수 없었지만)이 더러운 작은 해킹으로 마우스를 놓을 때마다 페이스 박스를 언 바인드하고 리바 인다. . 모든 facebox 링크에 새롭거나 오래된 링크가 있습니다.

$('a[rel*=facebox]').live("mousedown", function() { 
    $(this).unbind('click'); //everytime you click unbind the past event handled. 
    $(this).facebox(); 
}); 
+0

실시간 검색 솔루션이 가끔 작동합니다. 때로는 실패합니다. 첫 번째 솔루션을 추가해야하는 위치를 알 수 있습니까? – user632347

+0

난 해킹이긴하지만 속임수를 써야하는 제 3의 솔루션으로 내 anwser를 업데이트했습니다. – gordyr