从大型 HTML 字符串创建 jQuery 对象

2022-08-30 02:30:51

我有一个包含多个子节点的大HTML字符串。

是否可以使用此字符串构造 jQuery DOM 对象?

我试过,但它只返回一个包含所有单个节点的数组。$(string)

想得到一个元素,我可以使用.find()函数。


答案 1

更新:

从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/>')是 DOM 中不存在的假货<div>
  • $('<div/>').html(string)作为孩子附加到那个假货中string<div>
  • .contents()将该 fake 的子项检索为 jQuery 对象<div>

如果你想工作,那么试试这个:.find()

var string = '<div><input type="text" value="val" /></div>',
    object = $('<div/>').html(string).contents();

alert( object.find('input').val() );

演示


答案 2

从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 中显示结果。