2

我在 NodeJS 中使用 JQuery npm 来尝试处理一些 HTML。但我似乎无法将最终的 html 作为文本通过 http 模块发送到管道中。我可以$html.find('head')生成 html 文本,但$html.find('html')所有其他解决方案都会生成一个对象。

这是我的代码:

// this code, which will run under nodejs using jquery, should update the head in an entire html document

var $ = require('jquery');
var $html = $('<html><head><title>this should be replaced</title></head><body>and the entire document should be available as text</body></html>');
console.log('html', $html);
var $body = $html.find('body');

var res = $html.find('head').replaceWith('<head><title>with this</title></head>');
console.log(res.html());

http://jsfiddle.net/Wb7yV/4/

谢谢!

4

3 回答 3

0

你和你的jsfiddle非常接近。要更改头部,只需使用以下命令:

$('head').html('<title>with this</title>');
于 2013-03-13T20:00:24.337 回答
0

当您查看控制台日志时,$html您会注意到它包含 2 个索引对象:titletext. 在查看这些对象时,请注意它们都没有任何子对象,这些函数jQuery.find()是为浏览而设计的。

描述:获取当前匹配元素集中每个元素的后代,由选择器、jQuery 对象或元素过滤。

A filterfor 'title' 或 'text' 将允许您根据需要选择单个元素。

var $html = $('<html><head><title>this should be replaced</title></head><body>and the entire document should be available as text</body></html>');
var $title = $html.filter('title');
var $body = $html.filter('text');

var res = $title.html('replace with this');
console.log(res.filter('title').html());
// returns: "replace with this"
于 2013-03-13T19:18:14.880 回答
0

严格按照您发布的内容,您可以看到$html一个包含两个整体的 Object 数组。如果你运行var res = $html[1]; console.log(res.textContent);,你可以获得正文的文本。但不确定这是否是您所追求的?

于 2013-03-13T20:04:55.303 回答