5

我即时创建 HTML 片段:

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

是否有 jQuery 方法可以将此代码包装到 jQuery 中<div>

语义上我想做:

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

那是行不通的。所以我只想遵循jQuery 惯用的版本:

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

4 回答 4

11

请记住,您的 jQuery 对象仍在引用 new <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 回答