2010-09-04 129 views
2

我使用$.ajax()从我的服务器获取一些HTML页面。 retrun包含完整的HTML结果。但我只对本文档中的一个非常具体的div感兴趣。用jquery解析部分html字符串

唯一给出的是我的ajax成功函数返回一个JSON对象。我制作了一个PHP代理文件,用于其他内容,这些文件返回给我一个带有标题的JSON对象,一些信息给我正在加载的文件及其内容。所以基本上我有一个字符串包含整个页面的HTML。

其实我让这样的:$($(data.content)[21]) 但这是jQuery的的可怕例子(因为我两次使用$选择,而HTML可以通过改变和DIV我感兴趣的可以改变jquery的位置数组)。我只想得到div <div id="items">...</div>及其内容,然后只用jquery选中它。

这种情况的最佳做法是什么?你的方法是什么样子?

PS:如果我的例子是不明确的,你可以在这里看到一个例子: http://meodai.ch/content_slider/

回答

4
success: function(result) { 
    var div = $(result).filter('#items'); 
} 
+0

我已经做了第一次,但后来认为这将是一种浪费资源来选择整个结果与jQuery,然后才找#items。从字符串中首先提取div然后用jquery选择它会更慢吗? – meo 2010-09-04 12:18:47

+0

就性能而言,最好的办法是让你的php脚本直接返回你需要的部分HTML。 – 2010-09-04 12:20:34

+0

好主意,你会正规吗?或者是否有一些类可以轻松浏览PHP中的HTML文件的DOM? phpQuery? :P – meo 2010-09-04 12:24:31

2

试试这个:

var $items = $(data.content).find('#items') 

,或者#items是在<body>的顶层,然后做这个:

var $items = $(data.content).filter('#items') 
+0

伟大的我在想,但你推快它有点伟大,你是在onc电子! – 2010-09-04 12:25:02

1

一旦你解析JSON响应,并获得HTML出来,在一个jQuery对象包装它:

var $j = $(htmlGoesHere); 

然后,提取div的HTML :

var itemsHTML = $j.find("#items").html();