我写了一个代码,将两个现有元素包装成一个新元素。我的第一次尝试看起来像这样:
var $btn = $("button"),
$ul = $btn.next("ul"),
$div = $("<div></div>");
$btn.wrap($div);
$div.append($ul);
我惊讶地发现,在代码运行后,ul
从DOM中消失了。 Fiddle
我能够解决它在div
和wrap
之间选择append
这样的$div = $btn.parent();
:{/ 3}}:
$btn.wrap($div).after($ul);
在Google中进行一些搜索后,我发现了Fiddle并将代码中的3行替换为this):
div
但是,我想了解wrap
和ul
方法的用途。为什么;WITH Q
AS
(
SELECT
'A' AS tablename,
Column1,
Column2
FROM
TableFoo
UNION
SELECT
'B' AS tablename,
Column1,
Column2
FROM
TableBar
)
SELECT DISTINCT
TableName = replace(STUFF((SELECT ','+TableName AS [data()]
FROM Q T2
WHERE T2.Column1 = T1.Column1
AND T2.Column2 = T1.Column2
FOR XML PATH('')),1,1,''),',','') ,
Column1,
Column2
FROM Q T1
在第一个例子中消失了?
答案 0 :(得分:0)
wrap命令创建给定元素的副本,因此创建的“div”与存储在变量中的“div”不同。 来自文档:
此结构的副本将围绕匹配元素集中的每个元素。此方法返回用于链接目的的原始元素集。
更多信息:http://api.jquery.com/wrap/
如果你想看到你的div,请将代码$('body').append($div);
放在代码之后,你会看到你的'ul'没有消失。你把'ul'元素放在'div'元素中,但你没有在任何地方使用'div'。