2014-01-08 3 views
0

몇 가지 문제가 있습니다. 나는 어떻게하는지 알기 위해 노력했지만 ... 아무 것도 ... 뭔가 잘못된 일을하고있는 무엇을 알지 못한다 ...JSON에서 HTML 태그 사이 값 추출

JSON에 대한 ajax 요청이 있습니다.

일부 속성 값이 표시됩니다. 그들 중 하나는 내부에 HTML이 있습니다 :

"<p>Title</p> 
<p>Category</p> 
<p>First p.</p> 
<p>Second p.</p>" 

"제목"을 다른 변수에, "범주"를 다른 변수에 넣고 싶습니다. 다른 변수에 "첫 번째 p"와 "두 번째 p".

나는 이렇게했지만 아무 일도 일어나지 않았다.

tTitle = $(textThumb).find("p:nth-child(0)").html(); 
tCat = $(textThumb).find("p:nth-child(1)").html(); 
tText = $(textThumb).remove("p:nth-child(0)","p:nth-child(1)").html(); 

모두 정의되지 않았습니다. 내가 textThumb 인쇄 및 기타 매개 변수에서 다른 값도 OK 경우

, 그냥 여기 내가 그것을

감사에 대해 생각하는 방법을 잘 모릅니다 문제입니다 ,. 이 같은

+1

CSS의 인덱스는 1부터 시작된다 'p : nth-child (1)'과''p : nth-child (2)'가 있습니다. – Ryan

+1

또한 필터를 원하고 찾을 수 없습니다. 찾을 상위 요소가 없습니다. –

+0

요점은 HTML이 아직 프린터가 아니며 배열 안에 있다는 것입니다. 인쇄 된 경우 문제가 아니지만 먼저 변수 및 html 인쇄 후 분리 할 싶습니다. 나는 온 - 기반으로 시도했지만, 아무것도. tTitle, tCat 및 tText가 정의되지 않았습니다. –

답변

0

이 있습니다 아마도 더 나은 방법을을 HTML과 함께 JSON을 값으로 반환하는 것 이외에 무엇이든 할 수 있습니다. 즉, 하나의 부모 노드가있는 문자열을 jQuery 선택기에 넣는 것입니다. 당신은 아마 할 수 있도록

$('<div><p>Hi</p><p>Hi Again</p></div>').find('p').eq(0).text() // 'Hi!' 

또는 (1에서 시작한다) n 번째 자녀() 선택 귀하의 경우 $('<div>'+textThumb+'</div>')

$('<div><p>Hi</p><p>Hi Again</p></div>').find('p:nth-child(1)').text() // 'Hi!' 

...

2

시도 뭔가 :

var $p = $(textThumb).filter("p"), 
    tTitle = $p.eq(0).text(), 
    tCat = $p.eq(1).text(); 

중요한 것은 후손 그러나 당신이 최고 수준에 원하는 요소 요소에 .filter()보다는 .find() 때문에 후자의 모습을 사용하는 것입니다.

"다른 변수에"첫 번째 p "와"두 번째 p "가 있습니다."

당신은 아마도 같은 변수에 그 단락의 양쪽에서 텍스트 원하는 것을 의미하는 경우

var tText = $p.slice(2).text(); 

데모 : http://jsfiddle.net/g39Gm/

+0

이것은 잘 작동하고 있으며 이제 필터와 찾기의 차이점을 이해합니다. 사실, p 태그가 첫 번째 요소입니다. 그것은 div 안에 있었고, 더 적절하게 사용할 수 있다고 생각합니까? –

1
var tree = $(textThumb); 
tTitle = tree[0].innerText; 
tCat = tree[1].innerText; 
tText = tree[2].innerText + tree[3].innerText 
+0

이것은 단지 tTile을 정의하고, 나머지는 정의되지 않은 채로 있습니다. 감사. 나는이 길을 알지 못했다. –