存储DIV元素的原始父级

时间:2013-05-07 14:18:38

标签: jquery jquery-data

我正在使用div函数移动insertAfter元素的位置(和父级)。 像这样:

$('.annotation i').click(function(){
    $('.annotation').find('.comment').insertAfter('#container');
});

我想知道是否有可能以某种方式存储原始父级,以便在另一个用户操作之后将div元素移回其原始位置(在原始父级之下)。

感谢。

3 个答案:

答案 0 :(得分:2)

var parent = $('.annotation').find('.comment').parent();

将为您提供.comment类'元素的父级。

你也提到存储它的位置。您可能会发现 JQuery Index 很有帮助。存储父索引或以类似方式存储特定.comment元素的位置以供以后使用。

答案 1 :(得分:2)

这个使用.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'));
}

答案 2 :(得分:1)

您可以创建元素的克隆并隐藏原始内容:

$e = $('element');
$c = $e.clone();
$e.hide();

然后你可以销毁移动的元素并再次显示原文:

$e.show();
$c.remove();

或用移动的原件替换原件:

$e.replaceWith($c);

http://api.jquery.com/clone

如果原始元素具有ID属性,您还需要在克隆上更改或删除它,以便所有元素都保留唯一ID:

$c.attr('id','new-unique-string');
// or
$c.removeAttr('id');