出于一般的好奇心,我想知道为什么一个标记与.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()
就是解决方案。
答案 0 :(得分:2)
您正在使用.prev().find('.static-sublayers')
,它将使用类.static-sublayers
在div中搜索static-sublayers
。试试这个:
copy.appendTo(jQuery(el).prev());
的 DEMO FIDDLE 强>