2012-12-10 3 views
0

나는 다음과 같은 코드를 가지고 : 나는 그 $ (이) .toggleBranchOpen() 내가 볼 수있는 디버깅 할 때

function init() { 
     var $contentButtonPanel: JQuery = $('#content-button-panel') 
     $contentButtonPanel 
      .find('.arbo .toggle, .collapsible-list li:has(ul) > :first-child, .collapsible-list li:has(ul) > :first-child + span') 
      .click(function (event) { 
       $(this).toggleBranchOpen(); 
      }); 
    } 

    $.fn.toggleBranchOpen = function() { 
     this.each(function() { 
      $(this).closest('li').toggleClass('closed'); 
     }); 
     return this; 
    }; 

을; 라인에 도달했습니다. 그러나 코드는 그 함수 안에 들어 가지 않습니다.

toggleBranchOpen이 선언 된 방식에 문제가 있습니까? toggleBranchOpen이 사용되는 유일한 시간은 init 함수의 click 이벤트 내부입니다. 이 코드를 init으로 옮겨서 단순화 할 수 있습니까?

+0

예, 핸들러로 이동하면 훨씬 간단 해집니다. 특히 하나의 이벤트에만 필요하다면 모든 jQuery 인스턴스에 대해 전역 함수로 만들 필요가 없습니다. – Bergi

+0

"그 기능에 들어 가지 않는다"는 것은 무엇을 의미합니까? 실행되지 않았습니까? 오류가 있습니까? – Bergi

+1

'$ ('content-button-panel')'에 의해'var $ contentButtonPanel : JQuery = $ ('# content-button-panel') $ contentButtonPanel'로 바꿉니다. 너무 많이 보입니다. Syntax Error – Bergi

답변

1

이 코드를 시도하십시오 : 당신이 전역 함수를 필요로하지 않는 것으로 나타났다 때문에

function init() { 
    $('#content-button-panel') 
     .find('.arbo .toggle, .collapsible-list li:has(ul) > :first-child, .collapsible-list li:has(ul) > :first-child + span') 
     .click(function (event) { 
      $(this).closest('li').toggleClass('closed'); 
     }); 
} 

, 나는 코드를 조금 단순화하기 위해 노력했다.

희망이 있습니다.

0

선언에 문제가 없습니다. jQuery의 프로토 타입을 수정하고 있으므로 모든 jQuery 객체에서 즉시 사용할 수 있습니다.

var $contentButtonPanel: JQuery = $('#content-button-panel') 

나는 이것이 당신이 복사 큰 파일에서 붙여 넣기 단지 원인 가정 것이다, 그러나 저를 혼동하는 라인입니다. 문제를 확인하는 데 도움이되는 유일한 조언은이 루프 안에 디버그 정보를 넣는 것입니다. 그 외에는

this.each(function() { 
    $(this).closest('li').toggleClass('closed'); 
}); 

, 그것은 당신이있는 거 선택이 어떤 li 요소를 찾지 못하는 것이 가능한가?

관련 문제