2013-07-11 28 views
1

需要从jQuery的$.get结果中获取页面标题和其他元数据。阅读这里的某处(似乎无法找到问题 - 对不起!),它只返回body内的元素。也就是说,如果我将结果记录到控制台,我会看到包含标题和元标记的大量数据。解析javascript获取html页面标题的结果

所以问题很简单 - 我如何导航数组来取出标题?

下面是一个例子。以下示例将content作为HTML对象返回,但title返回undefined。如果仅返回body,则有意义。也就是说,日志记录data从上到下打印entire pages HTML。日志记录thiis打印page as an array,我可以看到title的条目,其innerHTML具有页面标题。所以 - title的值应该如何分配?

感谢您的帮助!

的JavaScript

$.get(target, function(data){ 

    var thiis = $(data), 
     content = thiis.find('#pageMain'), 
     title = thiis.find('title'); 

    console.log(data, thiis); 
}); 

回答

4

jQuery不解析doctype,html,head和body元素。它将您的整个页面作为div的innerHTML设置为GET请求。您只返回结果元素的集合,以便find()无法找到pageMin的标题元素和ID。你需要使用filter()。

$.get(target, function(data){ 
    var nodes = $(data), 
     content = nodes.filter('#pageMain'), 
     title = nodes.filter('title'); 
    console.log(content,title); 
}); 

为了使用find(),您需要设置div的innerHTML与数据并查询该父节点。

+0

明白了 - 有什么理由比@ scrappedcola的回答更有效率? – technopeasant

+0

接受因为解释 - 谢谢你的细节 – technopeasant

1

包裹在一个div返回的数据第一,然后进行选择。

$.get(target, function(data){ 
    var $wrap = $("<div></div>").append(data); 
    var title = $wrap.find("title"); 
}); 
+0

精美的作品。你介意解释它为什么起作用吗? – technopeasant