Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何撤消.detach()?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何撤消.detach()?

Javascript 如何撤消.detach()?,javascript,jquery,html,Javascript,Jquery,Html,我正在使用jQuery1.5和下面的代码在单击按钮时与某个类分离li元素。我想知道的是,当再次单击该按钮时,如何将元素添加回页面 <script> $("#remove").click(function () { $('li.type').fadeOut(300, function() { $(this).detach(); }); });</script> $(“#删除”)。单击(函数(){ $('li.type').fadeOu

我正在使用jQuery1.5和下面的代码在单击按钮时与某个类分离li元素。我想知道的是,当再次单击该按钮时,如何将元素添加回页面

    <script>
    $("#remove").click(function () {
      $('li.type').fadeOut(300, function() { $(this).detach(); });
    });</script>

$(“#删除”)。单击(函数(){
$('li.type').fadeOut(300,function(){$(this.detach();});
});
问题是:要将元素放回页面上的哪里?例如,如果所有的
li
元素都回到
    中,您可能会使用以下内容:

    var items = [];
    $('li.type').fadeOut(300, function() {
         items.push( $(this).detach() );
    });
    
    $('#replace').click(function() {
        for(var i = 0; i < items.length; i++) {
            $("ul#foo").append(items[i]);
        }
        items = [];
    });
    
    var项目=[];
    $('li.type').fadeOut(300,function(){
    items.push($(this.detach());
    });
    $(“#替换”)。单击(函数(){
    对于(变量i=0;i
    在这里,您不能执行for循环

    var demo;
    $('li.type').fadeOut(300, function() {
         demo = $(this).detach();
    });
    
    $('#replace').click(function() {
       $("ul#foo").append(demo);
    });
    

    这是一个很好的问题,然而,你的不被接受令人不安。可能知道的人没有我那么宽容。在提出新问题之前,请接受一些答案。:)(不过没有什么不好的感觉)为什么要把它拆开,而不是把它藏起来?否则您必须保留对元素的引用。@Felix,我在样式表中使用类型为n(奇数)和(偶数)的元素来定位不同的元素。当我使用.hide时,隐藏元素的奇数/偶数状态将被保留,这将搞乱其他所有元素的位置。detach修复了这个问题,但我不知道如何以这种方式将元素恢复。@felix,.remove()也修复了我的样式问题,但我想我会更幸运地得到.detach回来。也许我错了?这就是问题所在。这是一个有序的列表。我试图将类的元素放回它们在列表中的原始位置。接下来的问题是:我可以多次单击
    remove
    ?也就是说,首先移除一组元素,然后移除另一组?或者一次只移除一组元素?好的,那么。。。在我看来,比如说,有5个按钮,所有这些按钮都删除了5个不同类的列表项。当再次单击时,这些按钮会将其各自的列表项返回到页面上,但按其原始顺序。我不擅长JavaScript,所以可能我想得太多了。。。本质上,我只是基于分配的类而不是实际的列表内容构建一个可过滤列表然后稍后
    分离。insertAfter(父级),基本上记住了元素的父元素所在的位置,如果父元素也恰好被删除,则该操作将失败。在这种情况下,一种更为简洁的方法可能是每次重新插入元素时,只需浏览列表,并根据内容“找出”它所属的位置(而不是试图记住DOM在多次更改中的外观)。是的,这是有意义的。这实际上是一个使用HTML5时间元素的时间线,所以这样做应该不会太困难。