.prev()不按照jQuery api文档行事?

时间:2013-09-09 17:19:15

标签: jquery

出于一般的好奇心,我想知道为什么一个标记与.prev

相关的另一个标记相反

根据api,使用.prev你可以操纵元素的前身。

jQuery: 以下只是一个代码段,完整代码here

    jQuery('.add').click(function (e) {

        var copy = jQuery('#static-copy-sample .static-sublayers > #log1').clone();

        copy.appendTo(jQuery(el).prev().find('.static-sublayers'));

    });

HTML:

     <div class="static-sublayers">
         <div id="log1">elf <span class="will">1</span> </div>
     </div>

     <a class="add" href="#">Add</a> 

基本上上面的a是元素el而我是appendTo .prev()块,我开始工作的唯一方法就是包裹{{1}用div?

根据我对api的理解,.static-sublayers得到了前一个元素,所以我不确定为什么要包装它?

这是一个新手的问​​题,但我再次提出这个纯粹的好奇心,希望能够更好地学习jQuery,并特别理解.prev更好一点,并且通常可以解决这个问题。

同样,fiddle更深入地展示了代码,您可以更好地理解我,我已将工作HTML注释掉了。

修改 我一发布这个,我就跟小提琴搞砸了,找到了答案。在尝试发布之前,我尝试彻底测试所有内容,然后再询问.prev()然后意识到我需要将copy.appendTo(jQuery(el).prev('.static-sublayers'));留空.prev ...所以如果目标是嵌套的那么{{1} }是一个很好的解决方案,但如果标记很简单,并且字面意思是前面的元素根本没有嵌套,那么.prev()就是解决方案。

1 个答案:

答案 0 :(得分:2)

您正在使用.prev().find('.static-sublayers'),它将使用类.static-sublayers在div中搜索static-sublayers。试试这个:

copy.appendTo(jQuery(el).prev());

DEMO FIDDLE