2012-06-09 2 views
3

나는 작업중인 사이트에 scrollpaper라는 플러그인을 추가했습니다. 플러그인은 정적 페이지와 내가 사이트에 추가하는 HTML 스 니펫에 사용됩니다. 함수를 호출 첨부 단편이 제거 될 때첨부 된 요소 제거 오류 발생

문제는 사용된다

$(this).remove(); 

I는 scrollpaper 플러그인 관련된 다음 오류 얻을 :

TypeError: 'undefined' is not an object (evaluating 'data.clearer') 

오류가 발생할 스 니펫이 제거되는 순간. 실제 성능 문제는 발생하지 않으며, 스 니펫을 다시 추가 할 때도 플러그인이 성공적으로 호출되어 실행되지만 오류가 겹쳐서 해결할 수 있습니다.

주요 플러그인 파일은 정적 페이지 위해 만든 호출, 모든 페이지의 발에 포함되어 그 아래에 추가 :

두 번째 전화가 첨부 된 HTML에 추가됩니다
<script src="js/jquery.scrollbarpaper.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $('.scrollpaper-trigger').scrollbarPaper(); 
}); 
</script> 

:

<script> 
$(function() { 
    $('.scrollpaper-trigger-lightbox').scrollbarPaper(); 
}); 
</script> 

:이 문제를 다시 만들려면 어떻게 http://foleys.be/new-site/index.php

: 당신의 버그로 웹 사이트를 볼 수 있습니다

  1. 열기 웹 관리자/화재 버그
  2. 시작 전, 파티, 설정 메뉴 또는 예비 온라인 양식 중 하나
  3. 어느 오버레이/닫기 버튼을 클릭하여 열 요소를 닫거나 메뉴 사이를 전환 메뉴 페이지 하단에 있습니다.
  4. 이 문제를 스스로 해결하려면 오류

를 트리거, 지금까지 첨부 요소에 기본 플러그인 파일을 추가 (그리고 정적 페이지를 무시) 만 시도했습니다, 나는 또한 사용하려고했습니다 .html('').empty(''). .remove() 대신에 그게 도움이되지 못했습니다.

저는 몇 달 동안 JQuery에서만 작업을 해왔으므로, 어떻게 작동하는지 익숙해지면서 베스트 프랙티스를 배우고 싶습니다. 그러나이 문제는 현재 나를 넘어서서 모든 도움이 대단히 감사 할 것입니다.

메뉴 뒤집기 스크립트 :

$('.other-menus a').click(function() { 
var url = $(this).attr('data-url'); 

$('.switch').fadeOut(500, 
function() { 
$(this).detach(); 
$('<div></div>').load(url).fadeIn(800).appendTo('.switch-wrap'); 

}) 

}); 
+1

일에도 비 차단 문제를 해결하고자합니다. 임시로 ScrollPaper를 제거하고 오류가 계속 발생하는지 확인해 보셨습니까? – Bojangles

+0

건배, 항상 뭔가 잘못을 내고있는 이유를 이해하는 것이 가장 좋습니다. 때를 알 수 없기 때문에 머리가 더 진지한 모습을 보일 것입니다. – Dave

답변

1

당신은 .remove를 사용하여 DOM에서 요소를 제거하고 있지만 이것은 "scrollPaper" 키에 저장된 객체를 포함한 모든 .data 항목이 삭제됩니다. scrollpaper 플러그인은 .data("scrollPaper")에서 가져온 객체의 속성에 액세스하므로 undefined을 반환하기 시작하면 예외가 발생합니다.

대신 scripts.js.detach 원하는 :

$(this).detach(); //Removes Element From DOM 
+0

이것은 절대적으로 문제의 근원입니다! 설명에 감사드립니다. 하나의 작은 버그가 나타났습니다. scripts.js와 menu.js에서 메소드를 변경했으며 라이트 박스를 닫으면 메뉴를 두 번 이상 클릭하면 중복되는 내용이 표시됩니다. 어떤 아이디어, 동일한 주소로 업데이트 된 버전을 업로드했습니다. 메뉴 반전 스크립트로 OP를 업데이트했습니다. – Dave

+0

@Dave : 죄송합니다. 재현하는 방법을 자세히 설명해 주시겠습니까? 참고로 귀하의 웹 사이트는 CPU를 많이 사용합니다. 웹 사이트가 유휴 상태 일 때 내 CPU의 10 %를 차지합니다. 당신은 그걸 조사하고 싶을지도 모릅니다 ... – pimvdb

+0

머리를 환호합니다. CSS3 애니메이션을 많이 사용하고 있으므로 가능한 경우이를 토닝하는 방법에 대해 알아 보겠습니다. 문제를 재현하려면 사이드 바 (full, set, party)의 메뉴 옵션을 실행하십시오. 메뉴의 오른쪽 하단에는 다른 메뉴를 전환 할 수있는 옵션이 있으며 여기에는 업데이트해야하는 div 내에서 많은 중복 콘텐츠가 생성됩니다. 고집 주셔서 감사합니다. :) – Dave