Javascript 从大HTML字符串创建jQuery对象
我有一个包含多个子节点的大HTML字符串 是否可以使用此字符串构造jQueryDOM对象 我尝试了Javascript 从大HTML字符串创建jQuery对象,javascript,jquery,html,Javascript,Jquery,Html,我有一个包含多个子节点的大HTML字符串 是否可以使用此字符串构造jQueryDOM对象 我尝试了$(string),但它只返回一个包含所有单个节点的数组 我正在尝试获取一个可以在其上使用.find()函数的元素。var jQueryObject=$('').html(string).children(); var jQueryObject = $('<div></div>').html( string ).children(); 这将创建一个虚拟jQuery对象,您
$(string)
,但它只返回一个包含所有单个节点的数组
我正在尝试获取一个可以在其上使用.find()函数的元素。var jQueryObject=$('').html(string).children();
var jQueryObject = $('<div></div>').html( string ).children();
这将创建一个虚拟jQuery对象,您可以将字符串作为HTML放入其中。然后,您将只获得子项。更新:
在jQuery1.8中,我们可以使用,它将HTML字符串解析为DOM节点数组。例如:
var dom_nodes = $($.parseHTML('<div><input type="text" value="val" /></div>'));
alert( dom_nodes.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));
var myString=“Some stuff Some more stuff我正在寻找的东西”;
var$jQueryObject=$($.parseHTML(myString));
我已经创建了一个JSFidle来演示这一点:
它将任意HTML字符串解析为jQuery对象,并使用find在div中显示结果。还有一个很棒的库,名为专门为此设计的库 专为服务器设计的核心jQuery的快速、灵活和精简实现
var cheerio=require('cheerio'),
$=cheerio.load('Hello world');
$('h2.title').text('Hello here!');
$('h2').addClass('welcome');
$.html();
//=>你好!
我将以下内容用于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());
$(“.main”).empty();
var_template='您的HTML代码;
var-template=$.parseHTML(_-template);
var final=$(模板).find(“#myelement”);
$(“.main”).append(final.html());
注意:假设您使用的是jQuery,那么$(string)不起作用的原因是因为jQuery没有在$()之间找到html内容。因此,您需要首先将其解析为html。
一旦你有了一个解析html的变量。然后可以使用$(字符串)并使用对象上可用的所有函数
$($.parseHTML(<<table html string variable here>>)).find("td:contains('<<some text to find>>')").first().prev().text();
$($.parseHTML()).find(“td:contains('').first().prev().text();
HTML在哪里,您想用它构造什么?您可能需要查看.find()函数:jQuery对象是一个类似数组的对象,包含所有节点。你能详细说明一下你想要达到的目标吗?这个字符串在哪里?什么字符串?看看这里,我想这是你想要的,我必须通过一个字符串将元素从一个WebView传递到另一个WebView,这个字符串就是该元素的HTML源。我想我可能理解错了jQuery对象是什么。我试过了,但它不适用于我以后必须使用的.find()函数。@user1033619您必须使用.filter()
而不是。find()
@user1033619您还可以执行.find()
操作,检查演示但是如果string='
如果你可以做$(“”)
,为什么你不能做$(string)
?用我需要删除的更复杂的HTML。让它工作的内容。您不想执行$(string),因为您需要一个包装div来获取的内容。您将获得div的内容,这将是您的输入。我发现这个答案更好,因为它不必使用ghost div元素。$。parseHtml ftw。当我当时想要$jQueryObject.find()时,这个答案对我不起作用,我想是因为当时它没有添加到dom中。@dougajmcdonald--find应该可以工作,而不需要将内容添加到dom中。如果你看一下我的fiddle(),我在jQuery对象上调用find,它会像预期的那样返回一个结果:$jQueryObject.find(“#theAnswer”).html()@kiprainey有趣的是,我会挖掘出它没有为我提供的示例,看看是否还有其他东西正在进行中。它是在一个TypeScript模块中,在一堆其他逻辑中编写的,很可能是另一个问题!很抱歉,值得一提的是,在jQuery1.8中添加了parseHTML
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>
$(".main").empty();
var _template = '<p id="myelement">Your HTML Code</p>';
var template = $.parseHTML(_template);
var final = $(template).find("#myelement");
$(".main").append(final.html());
$($.parseHTML(<<table html string variable here>>)).find("td:contains('<<some text to find>>')").first().prev().text();