原谅我是愚蠢的,但这两个有效吗?
我问的唯一原因是我在一个插件中看到了前者我正在调整,而且我有点因为它不是简单地使用prependTo()
而被抛出;
$('li:last', list)
.clone()
.insertBefore( $('li:first', list) );
继我最初的问题以及@ Nick关于克隆的评论之后,这两种情况会产生相同的结果吗?
// 1
for (i = 1; i <= number; i++) {
$('li:first', list)
.clone()
.insertAfter( $('li:last', list) );
$('li:first', list).remove();
}
// 2
for (i = 1; i <= number; i++) {
$('li:first', list).appendTo(list);
}
答案 0 :(得分:2)
这取决于使用情况。
insertBefore()在元素之前插入元素,而prependTo()在元素的开头(但在其中)插入元素。
在您的情况下,$('li:last', list).clone().insertBefore( $('li:first', list) );
将在第一个li元素之前插入最后一个元素。
如果您要使用$('li:last', list).clone().prependTo( $('li:first', list) );
,那么最后一个li元素将添加到第一个li元素的里面,这是您不想要的。要以与insertBefore相同的方式使用prependTo(),您需要这样做
$('li:last', list).clone().prependTo( $(list) );
(假设 list 是对UL标记的引用。)
答案 1 :(得分:1)
是的,他们会完成同样的事情,只要你在两种情况下克隆。否则它会移动元素。