2012-07-30 23 views
2

取「H1」我有這樣的代碼Jquery的不是從文字

success: function(data) { 
title = $(data).find('h1').text(); 
alert(data); 
alert(title); 

} 

現在數據顯示所有H1標籤的HTML,但標題顯示空

+1

您能否提供樣本數據? – 2012-07-30 02:07:11

+1

它實際上顯示'null'?如果沒有找到匹配,我會認爲它會顯示一個空字符串。 – 2012-07-30 02:09:34

回答

2

.find()方法查找後代元素,因此如果您的h1元素處於「頂級」級別,它將不會被找到。嘗試.filter()代替:

title = $(data).filter('h1').text(); 

「基本上,我想要抓住h1和投入變量,然後把剩下的HTML數據變量」

給定data參數是字符串是這樣的:

"<h1>My heading</h1><p>This is a test</p><p>This <span>is another</span> test.</p>" 

您可以這樣做:

var $data = $(data), 
    $title = $data.filter("h1"), 
    title = $title.text(); 

$data = $data.not($title); 

上述結果兩個jQuery的對象:$title,其中包含h1元素,和$data,其中包含的其餘部分。從那裏你可以使用$title.text()來獲得h1的實際文本。

簡單的演示:http://jsfiddle.net/yyKCW/

如果你的意思是你想要的「剩餘HTML」作爲字符串那麼你可以做如上設置$data後如下:

var restAsString = $("<div></div>").append($data).html(); 

演示:http://jsfiddle.net/yyKCW/1/

+0

謝謝哥們,那完美的工作 – user825904 2012-07-30 06:18:23

2

如果您的數據組成是這樣的:

<h1>heading</h1> 
<p>content</p> 

然後,你需要在執行你的查詢之前把它包起來:

var title = $('<div/>').html(data).find('h1').text(); 
alert(title); 
+0

感謝工作的朋友。我沒有包裝它。還有一件事是'title = xxx'和'var title = xxxx'之間的差異是什麼? – user825904 2012-07-30 02:13:32

+0

@ user1544681很高興它有幫助!這裏是你的'var'問題的一個很好的答案:http://stackoverflow.com/a/2485895/187954 – 2012-07-30 02:15:25

+0

@ user1544681如果它幫助你解決你的問題,你可以隨時接受答案! – 2012-07-30 02:15:45