2012-06-22 4 views
1

위키피디아의 api에 액세스하고 아약스를 통해 주제에 관한 정보를 얻고 있습니다. 위키 피 디아는 내가 충분한 정보를 가지고하기 위해 반환되는 처음 3 개 단락을 잡아합니다 발견 꽤 느슨한 서식을 사용하기 때문에, 그러나jQuery : 객체에서 빈 항목을 제거하십시오.

wikipage = data.parse.text['*'].children('p:lt(3)'); 
wikipage.find('sup').remove(); 

: API는이 같은 분석하고 개체를 반환합니다. 때때로, 위키피디아는 빈 첫 번째 단락과 채워진 두 번째 및 세 번째 단락을 반환합니다. 다른 시간에는 1과 2가 비어 있고 3이 꽉 찼습니다. 그리고 때로는 모두 3 개의 텍스트로 가득합니다.

달성해야 할 것은 wikipage 개체에서 빈 단락 값을 제거한 다음 wikipage =를 개체의 첫 번째 p 값으로 만드는 것입니다.

나는 다음과 같은 시도 :

wikipage.find('p:empty').remove(); 
return wikipage.get(0); 

하지만 작동하지 않습니다. 빈 단락은 제거하지 않습니다.

저는 jQuery를 처음 사용하며 머리카락을 꺼내려고합니다! 도와주세요!

+0

'p' 태그가 완전히 비어 있거나 실제로 빈 텍스트 노드 인 공백을 포함 할 수 있습니까? – marteljn

+0

marteljn, 정말 특정 기사의 서식에 따라 다릅니다. 그래서 안전을 위해서 아마도 .trim()에 잠재적 인 공백이 필요할 것입니다. – w00tw00t111

답변

1

시도 :

wikipage.find("p").each(function() { 
    var $this = $(this); 
    if ($this.html().trim() == "") { 
     $this.remove(); 
    } 
}); 

당신은 또한 선택 사용할 수 있습니다

$("p", wikipage).each(function() { 

}); 

을하지만이 상황의 차이 모르겠어요. chaining 할 때 .find()를 사용하는 것이 좋습니다. 그러나이 선택은 처음에 있으므로 다른 점은 무엇인지 모릅니다. 나는 그것이 중요하지 않다라고 확신한다, 단지 그것을 지적하고 싶었다!

+0

.filter()를 사용하는 대안이 있다고 확신합니다 ... – Ian

+0

ianpgall, 그랬습니다. 고맙습니다! 여전히이 모든 것의 핸들을 얻으려고 노력하고 있으며, 특히 $ this의 변화하는 성질을 가지고 있습니다. 도와 주셔서 감사합니다. – w00tw00t111

+0

아무 문제 없어! $ (this)를 $ this에 저장 한 유일한 이유는 "this"를 jQuery 객체에 두 번 저장하는 작업을 저장하기 위해서입니다. 그래도이 모든 것이 의미가 있습니까? – Ian

관련 문제