JQuery如何获取生成的html </title>的<title>

时间:2014-02-13 16:47:14

标签: javascript jquery dom

我在变量中有一个完整的html文档,但我不知道如何获得标题。尝试下面的代码,但它只适用于特定的div,我不知道为什么。

//valid html
var data='<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>MyTitle</title><meta name="description" content="MyDEsc" /></head><body><div id="header">header content</div><div class="container" id="wrapper">Default body<div id="home">home</div><div id="project"><div>content</div><div>content</div><div>content</div></div></div></body></html>'

console.log($(data).find('title').text()) //nothing
console.log($('title', $(data)).text()) //nothing
console.log('header :' + $('#header', $(data)).html()) //undefined
console.log('header :' + $('#home', $(data)).html()) //expected value
console.log('project :' + $('#project', $(data)).html()) //expected value

在这里演示:http://jsfiddle.net/22RLk/

4 个答案:

答案 0 :(得分:4)

您的html,head和body标签已被删除,因此您最终得到的是元素集合而不是完整文档。标题是其中一个元素。

console.log($(data).filter('title').text())

http://jsfiddle.net/22RLk/3/

如果要创建文档,可以使用

document.implementation.createHTMLDocument(data)

create a javascript document Object
How to create Document objects with JavaScript

答案 1 :(得分:2)

我会使用Regexp,就像这里:http://jsfiddle.net/maximgladkov/6TTF5/1/

console.log(data.match(/<title>(.+?)<\/title>/)[1])

答案 2 :(得分:1)

Pure Javascript:

console.log('title :' + data.substr(data.indexOf('<title>') + 7,data.indexOf('</title>')-7-data.indexOf('<title>')));

答案 3 :(得分:0)

$(document).find('title').text()
$(document).find('title').html()

试试这种方式