Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从大HTML字符串创建jQuery对象_Javascript_Jquery_Html - Fatal编程技术网

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

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对象,您

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

是否可以使用此字符串构造jQueryDOM对象

我尝试了
$(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();