jQuery:包装新创建的html

jQuery:包装新创建的html,jquery,html-manipulation,Jquery,Html Manipulation,我动态创建HTML代码段: $('<span/>').addClass(spanClass) 请记住,jQuery对象仍在引用新的,因此如果您试图使用链式方法插入它,则不会插入 要克服这个问题,您需要首先遍历到新的父级 // Traverse up to the new parent in order to append the <div> and <span> $('<span/>').addClass(spanClass).wrap(

我动态创建HTML代码段:

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

请记住,jQuery对象仍在引用新的
,因此如果您试图使用链式方法插入它,则不会插入

要克服这个问题,您需要首先遍历到新的父级

    // Traverse up to the new parent in order to append the <div> and <span>
$('<span/>').addClass(spanClass).wrap($('<div/>').addClass(divClass))
            .parent().appendTo('body');
//向上遍历到新的父级,以便附加和
$('').addClass(spanClass).wrap($('').addClass(divClass))
.parent().appendTo('body');
你也可以这样写:

$('<span/>').addClass(spanClass).wrap('<div/>')
            .parent().addClass(divClass).appendTo('body');
$('').addClass(spanClass).wrap('')
.parent().addClass(divClass).appendTo('body');
试试这个:

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

$('').addClass(divClass).append($('').addClass(spanClass));
为什么不:

$('<div/>').addClass(divClass).append($('<span/>').addClass(spanClass));
$('').addClass(divClass).append($('').addClass(spanClass));
IE首先创建div?

$('',{'class':divClass}).append($('',{'class':spanClass}));
$('<div/>', {'class': divClass}).append($('<span/>', {'class': spanClass}));

+1用于使用“props”对象,但是您应该将
放在引号中,或者称它为
类名
,以避免保留字问题。它与
函数wrap(what,with){return$(with).append(what);}
有什么不同。“jQueryIDomatic”还意味着不破坏使jQuery如此方便的函数链接。无论您是调用
foo.wrap(bar)
还是
bar.append(foo)
都不太重要,首先,它不起作用,
wrap()
在DOM中包装节点,$('')直到我把它放在那里才在DOM中。其次,如果我使用我介绍的函数,我会执行
$('body')。append(wrap(…)
@user93422:首先,是的,它确实有效。其次,您将使用
$('body')的方法得到相同的结果。如果您不费心遍历新的
,则使用
$('body')。在不遍历的情况下追加(…
。这是有效的,因为它确实遍历到新的父级
@user93422:很清楚,当您执行
$('')时
您正在创建一个DOM元素。当您使用
$(“”)
包装它时,您现在拥有了一个可以遍历的元素层次结构,即使它们尚未插入
文档
.aha,
.wrap()
确实返回包装的对象。糟糕,它确实有效。因为我怀疑必须有一种内置的jQuery方法来实现这一点。
$('<div/>').addClass(divClass).append($('<span/>').addClass(spanClass));
$('<div/>').addClass(divClass).append($('<span/>').addClass(spanClass));
$('<div/>', {'class': divClass}).append($('<span/>', {'class': spanClass}));