我正在使用insertAfter
函数移动div
元素的位置(和父母)。 事情是这样的:存储DIV元素的原始父代
$('.annotation i').click(function(){
$('.annotation').find('.comment').insertAfter('#container');
});
我想知道是否有可能以某种方式与原始亲本存储,以便之后的另一个用户动作的div
元素移回原来的位置(原母公司下)。
谢谢。
我正在使用insertAfter
函数移动div
元素的位置(和父母)。 事情是这样的:存储DIV元素的原始父代
$('.annotation i').click(function(){
$('.annotation').find('.comment').insertAfter('#container');
});
我想知道是否有可能以某种方式与原始亲本存储,以便之后的另一个用户动作的div
元素移回原来的位置(原母公司下)。
谢谢。
var parent = $('.annotation').find('.comment').parent();
会给你的.comment类的元素的父母。
你提到存储它的位置。你可能会发现JQuery Index有帮助。以类似的方式存储父级索引或存储特定.comment元素的位置以供以后使用。
您可以创建元素的副本,并隐藏原始:
$e = $('element');
$c = $e.clone();
$e.hide();
然后你就可以摧毁移动的元素,并再次显示原始:
$e.show();
$c.remove();
或替换原有移动的一个:
$e.replaceWith($c);
如果原始元素有一个ID属性,你会想更改或删除它的克隆,以及让所有的元素保留的唯一ID:
$c.attr('id','new-unique-string');
// or
$c.removeAttr('id');
这是克隆而不是移动它,如果有的话? – Alvaro 2013-05-07 14:26:58
您根本不必存储父项,因为原始元素正是您离开它的地方。 – Blazemonger 2013-05-07 14:28:14
@Steve如果您需要隐藏克隆并将其移回原始位置(也称为“将div元素移回到原始位置”,您说过),则可以保留原始位置。 – RaphaelDDL 2013-05-07 14:28:57
这一个存储到原来的父级的引用使用.data()
函数。 。
$('.annotation i').click(function(){
$('.annotation').find('.comment').each(function() {
$(this).data('oparent', $(this).parent());
$(this).insertAfter('#container');
});
});
function anotherUserAction(comment) {
comment.appendTo(comment.data('oparent'));
}
什么火焰的意思是:。'$( 'yourDiv ')隐藏()的clone()appendTo(' #集装箱 ')显示()addClass(' 克隆');'会抢。 yourDiv,隐藏它,克隆它,追加,显示克隆并向克隆中添加一个类(这样你就可以在后面执行'$('。yourDiv.clone')' – RaphaelDDL 2013-05-07 14:25:49
@RaphaelDDL这个元素在移动后会遭到修改。它包含一个textarea,因此我需要再次克隆它,删除原来的一个,然后添加这个返回到原来的状态。是不是再简单一点呢? – Alvaro 2013-05-07 14:31:14
你可以做'$( '.yourDiv')。replaceWith('。yourDiv.clone')。show();'当你需要回到第一个地方时(显示是因为yourDiv在我们克隆的时候被隐藏) – RaphaelDDL 2013-05-07 17:25:12