我有一个包含多个子节点的大 HTML 字符串。
是否可以使用此字符串构造一个jQuery DOM 对象?
我试过了,$(string)
但它只返回一个包含所有单个节点的数组。
试图获取一个元素,我可以在其上使用 .find() 函数。
我有一个包含多个子节点的大 HTML 字符串。
是否可以使用此字符串构造一个jQuery DOM 对象?
我试过了,$(string)
但它只返回一个包含所有单个节点的数组。
试图获取一个元素,我可以在其上使用 .find() 函数。
从 jQuery 1.8 开始,我们可以使用$.parseHTML,它将 HTML 字符串解析为 DOM 节点数组。例如:
var dom_nodes = $($.parseHTML('<div><input type="text" value="val" /></div>'));
alert( dom_nodes.find('input').val() );
var string = '<div><input type="text" value="val" /></div>';
$('<div/>').html(string).contents();
$('<div/>')
是<div>
在 DOM 中不存在的假的$('<div/>').html(string)
附加string
在那个假<div>
的孩子中.contents()
检索该假货的子代<div>
作为 jQuery 对象.find()
工作,那么试试这个:var string = '<div><input type="text" value="val" /></div>',
object = $('<div/>').html(string).contents();
alert( object.find('input').val() );
从 jQuery 1.8 开始,您可以使用 parseHtml 来创建您的 jQuery 对象:
var myString = "<div>Some stuff<div>Some more stuff<span id='theAnswer'>The stuff I am looking for</span></div></div>";
var $jQueryObject = $($.parseHTML(myString));
我创建了一个 JSFidle 来演示这一点:http : //jsfiddle.net/MCSyr/2/
它将任意 HTML 字符串解析为 jQuery 对象,并使用 find 将结果显示在 div 中。
var jQueryObject = $('<div></div>').html( string ).children();
这将创建一个虚拟的 jQuery 对象,您可以将字符串作为 HTML 放入其中。然后,你只得到孩子。
还有一个很棒的库,叫做cheerio,专门为此设计的。
专为服务器设计的核心 jQuery 的快速、灵活和精益实现。
var cheerio = require('cheerio'),
$ = cheerio.load('<h2 class="title">Hello world</h2>');
$('h2.title').text('Hello there!');
$('h2').addClass('welcome');
$.html();
//=> <h2 class="title welcome">Hello there!</h2>
我将以下内容用于我的 HTML 模板:
$(".main").empty();
var _template = '<p id="myelement">Your HTML Code</p>';
var template = $.parseHTML(_template);
var final = $(template).find("#myelement");
$(".main").append(final.html());
注意:假设您使用的是 jQuery