我试图了解以前版本的jquery 1.9.1版本中.appendTo()api的行为变化。在升级指南中,它说
从1.9开始,这些方法(
.appendTo
,.insertBefore
,.insertAfter
和.replaceAll
)总是返回一个新集合,使它们始终可用 使用链接和.end()
方法。在1.9之前,他们会回来 仅当存在单个目标元素时才设置旧集。请注意这些 方法总是返回所有元素的聚合集 附加到目标元素。
我试过这个api的简单用法
<div class="test">hello
</div>
var $ = jQuery.noConflict();
var a =$("<p> hi </p>").appendTo("div.test").attr("style","background-color:red");
console.log(a);
以下是fiddle link
我将一个段落元素附加到div,然后更改结果元素的背景。我在1.7.2和1.9.1中尝试了这两种情况,附加后的结果是段落元素。
但是在文档中已经解释过,在1.9之前它将返回旧集合(在我的示例中,旧集合引用了我认为的div元素)。我肯定对此有错误的想法。
请帮助纠正我的理解。
答案 0 :(得分:1)
“这些方法总是返回附加的所有元素的聚合集”意味着它返回调用appendTo()
的jQuery集合 - 而不是传递给函数的集合。
在您的情况下,这将是段落。所以它应该返回,无论你使用的jQuery版本,只要“div.test”是一个单元素目标(顺便说一下,你不是指$('div.test')
?),或者如果使用v 1.9,只要“div.test”返回至少一个元素。
这是jQuery链接大多数调用的情况 - 函数返回它被调用的元素,因此你可以继续用它做其他事情。我相信这是jQuery函数的manipulation子集的所有的情况。
答案 1 :(得分:0)
他们返回附加到单个目标元素的元素。 即使找不到目标元素。
无论目标元素的数量是多少,新版本都会返回整个集合。如果找不到目标元素,它们将不再返回任何内容。
因此,它们返回创建的结构而不是附加的数据。