필자가 작성한 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를 잘 수행하지는 않는다는 것을 알고있다.), 그러나 나는 배우려고 노력하고있다. 어떤 도움을 주시면 감사하겠습니다.
들여 쓰기 된 코드를 SO에 붙여 넣으려면 탭이 아닌 공백 만 사용해야합니다. 그것을 붙여 넣은 다음 SO 편집기 도구 모음에있는'{}'도구를 사용하여 코드로 표시하십시오. – Barmar
감사합니다! 나는 다음 번에 더 들여 쓰기를 확실히 할 것입니다. 'findlast()'에 'return'이 필요한 것을 지정할 수 있습니까? 나는 당신이 마지막으로 함수를 호출한다고 가정 할 것이지만, 그렇게하면 마지막의 함수에 도달 할 때까지 '현재'의 값을 잃어 버리게됩니다. 어딘가에 내 논리의 결함 일 수 있지만 디버거가 이전에 값을 반환하고 있었음을 확신합니다! (나는 약 18 시간 동안이 작업을하고 있었으므로 일들이 너무 퍼지기 시작했다.) – bitfidget
12 시간 후에 findLast 함수의 마지막에 또 다른'return current; '가 필요했다. – bitfidget