2014-05-17 2 views
0

필자가 작성한 jQuery 함수를 통해 선택한 jQuery 요소의 마지막 자식 요소를 찾으려고합니다. 디버거를 함수 안에 넣고 실행하면 '현재'의 값을 추적 할 수 있고 원하는대로 할 수 있습니다. 마지막으로 자식이 원하는대로 거품을 내고 있지만 호출 지점에서이를 반환하지는 않습니다. 그것은 (그것은 정의되지 않은 반환).함수 안에 jQuery 함수가 작동하지만, 정의되지 않은 상태로 반환합니다.

코드 같이 보인다 :

(function($){ 
    $.fn.findBattleElement = function() { 

     var current = this; 

     var findLast = function() { 
      if (current.children().length > 0) { 
       if (current.children().last().is('br, p, span, td, ul, ol, li, tr, table, a, img, video, div, section, article, footer, header')) { 
        current = current.children().last(); 
        findLast(); 
       } else { 
        current.children().last().remove(); 
        findLast(); 
       } 
      } else { 
       return current; 
      } 
     } 

     findLast() 
    }; 
} (jQuery)); 

내가했던 함수 내에서 기능을 제거하려고, 그것은 자신을 호출 재귀 적으로 시도 할 수있어, 그래서 대신에/다른, 내가 current.findBattleElement()를 사용하는 경우 먼저 findlast()를 사용하는 , 그런 다음 함수 자체가 정의되지 않았다는 오류가 발생했습니다.

나는 모든 것이 조금 amatuerish (들여 쓰기에 대해 미안하지만, 내 문서에서는 괜찮아 보이지만, stackOverflow를 잘 수행하지는 않는다는 것을 알고있다.), 그러나 나는 배우려고 노력하고있다. 어떤 도움을 주시면 감사하겠습니다.

+0

들여 쓰기 된 코드를 SO에 붙여 넣으려면 탭이 아닌 공백 만 사용해야합니다. 그것을 붙여 넣은 다음 SO 편집기 도구 모음에있는'{}'도구를 사용하여 코드로 표시하십시오. – Barmar

+0

감사합니다! 나는 다음 번에 더 들여 쓰기를 확실히 할 것입니다. 'findlast()'에 'return'이 필요한 것을 지정할 수 있습니까? 나는 당신이 마지막으로 함수를 호출한다고 가정 할 것이지만, 그렇게하면 마지막의 함수에 도달 할 때까지 '현재'의 값을 잃어 버리게됩니다. 어딘가에 내 논리의 결함 일 수 있지만 디버거가 이전에 값을 반환하고 있었음을 확신합니다! (나는 약 18 시간 동안이 작업을하고 있었으므로 일들이 너무 퍼지기 시작했다.) – bitfidget

+0

12 시간 후에 findLast 함수의 마지막에 또 다른'return current; '가 필요했다. – bitfidget

답변

0

당신은 할 필요가 :

return findLast(); 

는 재귀 함수에서 값을 반환 할 수 있습니다.

관련 문제