2009-07-26 3 views
0

자바 스크립트에서 문자열의 하위 집합을 가져오고 싶습니다.Javascript/JQuery/JSON을 사용하여 문자열의 하위 집합을 가져 오는 방법은 무엇입니까?

내가 foo는 콜백와 JSON 변수로 이것을 가지고 : 현재, 난 단지 전체 문자열을 저장하는 방법을 알고

foo({"results":[ 
"<div id=\"following\"><span><a href=\"http://twitter.com/barackobama\">Obama</a></span></div>" 
]}) 

을 그리고 이것은 내 콜백 함수입니다 :

function foo(o){ 
    var entireDiv = o.results[0]; 
} 

어떻게 "< a href = ...> ... </a> "태그를 자바 스크립트의 문자열로 저장하나요?

+0

이유는 바로 HTML을 반환하지 조각 대신 json. 그 중 하나 또는 json으로 데이터를 반환하고 마크 업을 생성하는 템플릿 플러그인을 사용하십시오. 왜 당신이 json 문자열 – redsquare

+0

에 마크 업을 맹 글링하려고하는지 확신 할 수 없다. 나는 입력을 제어 할 수 있다고 생각하지 않는다. – chris

답변

4

, 두 번째 인수로 HTML의 조각으로 구문 분석 할 수 있습니다.

$j = jQuery.noConflict(); 

function foo(o) 
{ 
    var JustTheLink = $j('a' , o.results[0]).parent().html(); 
} 


업데이트 :

그래서, 당신의 foo 기능을 업데이트 할 처리하기 위해 여러 개의 링크로
을, 당신은이 작업을 수행 할 수 있습니다

function foo(o) 
{ 
    $j('a',o.results[0]).each(handleSrc); 
} 

function handleSrc() 
{ 
    console.log(this); // tag 
    console.log($j(this).html()); // contents 
} 
+0

나를 위해 일합니다. html 안에 여러 링크가있는 경우 두 번째 링크, 세 번째 링크 등을 얻으려면 어떻게해야합니까? – chris

+0

여러 링크에 대한 내 업데이트보기 - 좋은 방법이 아닌 것처럼 보입니다. 더 나은 솔루션이 있어야합니다. :/ –

+0

예. 내 입력이 비교적 고정되어 있기 때문에 정확히 얼마나 많은 링크를 가지고 있는지 알고 있으므로 CSS 선택기를 사용하여 링크를 지정해야합니다. 내 경우에 효과가있어. 감사! – chris

2

당신은 앵커 태그를 찾는 정규 표현식을 사용할 수 있습니다 jQuery로

function foo(o){ 
    var entireDiv = o.results[0]; 
    var link = /<a.+?\/a>/.exec(entireDiv)[0]; 
} 
+0

방화범이 다음과 같이 말합니다 : "잘못된 정규 표현식 플래그 a". 너를 위해 일 했니? – chris

+0

좋아, 두 번째 앞에있는 백 슬래시가 필요합니다 – chris

+0

오른쪽 ... 저는 보통 C#에서 정규 표현식을 사용하지만 Javascript가 아닙니다 ... – Guffa

0
var link = entireDiv.match(/<a[^>]*>.*<\/a>/); 
관련 문제