5

オンザフライで HTML スニペットを作成します。

$('<span/>').addClass(spanClass)

このコードをラップするjQueryの方法はあり<div>ますか?

意味的に私はやりたい:

$('<span/>').addClass(spanClass).wrap($('<div/>').addClass(divClass))

それは機能しません。したがって、次のjQuery慣用バージョンが必要です。

function wrap(what, with) { return $(with).append(what); }
4

4 に答える 4

11

jQueryオブジェクトはまだ新しい<span>を参照していることに注意してください。したがって、連鎖メソッドを使用してオブジェクトを挿入しようとすると、は<div>挿入されません。

<div>これを克服するには、最初に新しい親までトラバースする必要があります。

    // Traverse up to the new parent in order to append the <div> and <span>
$('<span/>').addClass(spanClass).wrap($('<div/>').addClass(divClass))
            .parent().appendTo('body');

次のように書くこともできます。

$('<span/>').addClass(spanClass).wrap('<div/>')
            .parent().addClass(divClass).appendTo('body');
于 2011-01-12T16:57:08.930 に答える
4
$('<div/>', {'class': divClass}).append($('<span/>', {'class': spanClass}));
于 2011-01-12T16:58:22.483 に答える
1

なぜだめですか:

$('<div/>').addClass(divClass).append($('<span/>').addClass(spanClass));

IEは最初にdivを作成しますか?

于 2011-01-12T16:57:19.413 に答える
0

これを試して:

$('<span/>').addClass(spanClass).wrap($('<div/>').addClass(divClass).html()); 

また

$('<div/>').addClass(divClass).append($('<span/>').addClass(spanClass));
于 2011-01-12T16:57:17.923 に答える