我试图了解 jquery 1.9.1 版本中 .appendTo() api 与以前版本的行为变化。在升级指南中它说
As of 1.9, these methods(
.appendTo
,.insertBefore
,.insertAfter
, and.replaceAll
) always return a new set, making them consistently usable with chaining and the.end()
method. Prior to 1.9, they would return the old set only if there was a single target element. Note that these methods have always returned the aggregate set of all elements appended to the target elements.
我尝试了这个 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);
我将一个段落元素附加到 div,然后更改结果元素的背景。我在 1.7.2 和 1.9.1 中都尝试过,在这两种情况下附加后的结果是段落元素。
但文档中已经解释过,在 1.9 之前,它将返回旧集(在我的示例中,旧集指的是我相信的 div 元素)。我对此肯定有错误的想法。
请帮助纠正我的理解。
最佳答案
“这些方法始终返回所有附加元素的聚合集”意味着它返回调用 appendTo()
的 jQuery 集合,而不是传递到函数中的集合。
在您的情况下,这就是该段落。因此,无论您使用什么 jQuery 版本,只要“div.test”是单元素目标,它都应该返回(顺便说一句,您的意思不是 $('div.test')
?),或者如果使用 v 1.9,只要“div.test”返回至少一个元素。
这是大多数调用的 jQuery 链接的情况 - 函数返回它被调用的元素,因此您可以继续用它做其他事情。我相信 manipulation 的所有都是这种情况。 jQuery 函数的子集。
关于jquery - jquery v1.9.1 中 .appendTo() 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856423/