0

只是出于普遍的好奇,我想知道为什么一个标记与另一个标记相对于.prev

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

jQuery: 这里只是一个片段,完整的代码在这里

    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()块,我让它工作的唯一方法是.static-sublayers用 div 包装?

根据我对api的理解,.prev获取了前一个元素,所以我不确定为什么必须包装它?

这是一个新手问题,但我再次出于纯粹的好奇提出这个问题,希望能在 jQuery 上做得更好,并特别理解.prev()一些更好的和一般的棘手问题。

小提琴再次更深入地显示了代码,您可以更好地理解我,我已将工作 HTML 注释掉。

编辑: 我一发布这个,我就弄乱了小提琴,找到了我的答案。我尝试在发布之前彻底测试所有内容我在询问之前这样做了copy.appendTo(jQuery(el).prev('.static-sublayers'));然后意识到我需要.prev留空.prev()......所以如果目标是嵌套的,那么.find()是一个很好的解决方案,但如果标记很简单并且前面的元素没有嵌套在然后copy.appendTo(jQuery(el).prev());就是解决方案。

4

1 回答 1

2

您正在使用which 将在 div 中.prev().find('.static-sublayers')搜索class 。尝试使用这个:.static-sublayersstatic-sublayers

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

DEMO FIDDLE

于 2013-09-09T17:26:46.113 回答