2009-07-26 5 views
0

Javascriptで文字列のサブセットを取得したい。現在、私は全体の文字列を格納する方法を知っている: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> 」というタグをJavascriptの文字列として保存するにはどうすればよいですか?

+0

理由だけでHTMLを返しませんjsonの代わりに断片。いずれか、またはjsonとしてデータを返し、テンプレートプラグインを使用してマークアップを生成します。あなたがマークアップをjson文字列にマングルしようとしている理由がわからない場合は、 – redsquare

+0

jsonとして私に与えられます。私は入力を制御しているとは思わない。 – chris

答えて

4

、2番目の引数として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内に複数のリンクがある場合は、どうすれば2番目のリンク、3番目のリンクなどを取得できますか? – chris

+0

複数のリンクのための私の更新を見てください - しかし、良い方法ではありませんが...より良い解決策が必要です。 :/ –

+0

うん。私の入力は比較的固定されているので、私はどれくらいのリンクを持っているのか正確に分かっているので、CSSセレクターを使ってリンクを指定すべきだとわかりました。私の場合は動作します。ありがとう! – chris

2

あなたはアンカータグを見つけるために正規表現を使用することができますjQueryを使って

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

Firebugによると、 "無効な正規表現フラグa"です。あなたはそれをあなたのために働かせましたか? – chris

+0

OK、それは2番目のaの前にバックスラッシュが必要です – chris

+0

右...私は通常、C#では正規表現を使用していますが、Javascriptではありません... – Guffa

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