使用jquery从字符串中提取HTML

时间:2014-08-02 04:04:52

标签: javascript jquery

我试图使用维基百科API提取一些信息。响应是一个包含所有部分HTML的超级字符串。在回复中,我想要从第一个li中提取前3个ul,并且最好不要将其写入文档,直到我和#39;完成提取。

我一直在修补不同的jquery功能组合,但是没有多少运气。对我来说最有意义的是:

 var markup = $('<div>' + response + '</div>').find('ul:lt(3)').html();
 $('body').append(markup);

只有:lt()过滤器似乎仅适用于ul而不是li,即使.find()仅选择后代。我可能会过度思考这个问题,但你们有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以通过多种方式执行此操作,例如,首先.find() ul元素,然后获取一些.children()

var markup = $('<div>' + response + '</div>').find('ul:first')
                                             .children('li:lt(3)').html();

...或使用其他选择器:

.find('ul:first > li:lt(3)').html()

来自你的评论:

  

“我如何选择ul和第一个li而不仅仅是li?”

如果选择ul,它会自动包含它的所有子节点(也就是说,生成的jQuery对象将包含一个元素ul,但ul将保留其子节点),因此您可以删除不需要的子节点:

var markup = $('<div>' + response + '</div>').find('ul:first');
markup.children('li:gt(2)').remove();
$('body').append(markup);

请注意,在最新的代码中,我没有使用.html()方法,因为这只会提取ul的内容,即li元素,而不是ul元素本身。