从一个大的HTMLstring创build一个jQuery对象

我有一个大的HTMLstring包含多个子节点。

是否有可能使用此string构造一个jQuery DOM对象?

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

试图获得一个我可以使用.find()函数的元素。

更新:

从jQuery 1.8开始,我们可以使用$ .parseHTML ,它将HTMLstringparsing为一个DOM节点数组。 例如:

 var dom_nodes = $($.parseHTML('<div><input type="text" value="val" /></div>')); alert( dom_nodes.find('input').val() ); 

DEMO


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

DEMO

这段代码中发生了什么:

  • $('<div/>')是一个不存在于DOM中的假<div>
  • $('<div/>').html(string)作为子元素在该伪造的<div>追加string
  • .contents()检索假的<div>的孩子作为一个jQuery对象

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

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

DEMO

从jQuery 1.8开始,你可以使用parseHtml来创build你的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)); 

我创build了一个JSFidle来演示这个: http : //jsfiddle.net/MCSyr/2/

它将任意的HTMLstringparsing为一个jQuery对象,并使用find将结果显示在div中。

 var jQueryObject = $('<div></div>').html( string ).children(); 

这将创build一个虚拟的jQuery对象,您可以将该string作为HTML。 那么,你只有孩子。

还有一个名为cheerio伟大的图书馆专门为此devise的。

为服务器专门devise的核心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

$(string)不工作的原因是因为jquery没有find$()之间的html内容。 因此,您需要先将其parsing为html。 一旦你有一个你已经parsing了HTML的variables。 然后可以使用$(string)并使用对象上的所有可用函数