2009-07-26 70 views
0

我想在Javascript中获得一个字符串的子集。目前,我只知道如何存储整个字符串:如何使用Javascript/JQuery/JSON获取字符串的子集?

我有这个作为一个回调JSON变量foo的:

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

这是我的回调函数:

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

如何在Javascript中将“< a href = ...> </a> ”标记存储为字符串?

+0

为什么不直接返回HTML片段而不是json。要么这样做,要么将数据作为json返回并使用模板插件来生成标记。不知道为什么你试图将标记打乱成json字符串 – redsquare 2009-07-26 23:38:01

+0

它作为json给了我。我不认为我能控制输入。 – chris 2009-07-26 23:40:59

回答

4

使用jQuery,您可以在一块的HTML作为第二个参数解析。

所以,更新您的foo功能:

$j = jQuery.noConflict(); 

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


更新:
通过多条链路来处理,你可以这样做:

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

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

您可以使用正则表达式来找到锚标记:

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

Firebug说:“无效的正则表达式标志a”。你有没有为你工作? – chris 2009-07-26 23:32:50

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