2010-09-04 164 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();