156

I have a big HTML-string containing multiple child-nodes.

Is it possible to construct a jQuery DOM object using this string?

I've tried $(string) but it only returns an array containing all the individual nodes.

Imtrying to get an element which i can use the .find() function on.

4

7 に答える 7

226

アップデート:

jQuery 1.8 から、HTML 文字列を解析して DOM ノードの配列にする$.parseHTMLを使用できます。例えば:

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() );

デモ

于 2012-06-15T09:11:51.190 に答える
13
var jQueryObject = $('<div></div>').html( string ).children();

これにより、文字列をHTMLとして配置できるダミーのjQueryオブジェクトが作成されます。次に、子供だけを取得します。

于 2012-06-15T09:09:30.600 に答える
2

このために特別に設計された、 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>
于 2015-11-16T02:03:39.317 に答える