jQuery insertBefore(':first',object)vs prependTo(object)

时间:2010-12-08 20:09:50

标签: jquery

原谅我是愚蠢的,但这两个有效吗?

我问的唯一原因是我在一个插件中看到了前者我正在调整,而且我有点因为它不是简单地使用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);
}

2 个答案:

答案 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)

是的,他们会完成同样的事情,只要你在两种情况下克隆。否则它会移动元素。