2011-04-23 39 views
4

我正在使用JQuery 1.5和下面的代码来分离单击按钮时某些类的li元素。我想知道的是,再次单击该按钮时,如何将元素添加回页面?如何解开.detach()?

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

这是一个很好的问题,但是,您的接受程度不够令人不安。可能认识的人不像我一样宽容。在提出新问题之前,请接受一些答案。 :)(没有不好的感觉然而) – 2011-04-23 12:56:11

+2

为什么分离它,而不是只隐藏它?否则,你必须保持对元素的引用。 – 2011-04-23 13:02:38

+0

@Felix,我在我的样式表中使用了n个类型(奇数)和(偶数)来以不同的方式定位元素。当我使用隐藏时,隐藏元素的奇/偶状态被保留,搞乱了所有其他的位置。 .detach修复了这个问题,但我不知道如何以这种方式重新使用这个元素。 – binaryorganic 2011-04-23 13:05:53

回答

5

的问题是:其中在页面上做你想要把元素回来?如果,例如,所有的li元素进去了<ul id="foo"></ul>你可能会使用这样的:

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 = []; 
}); 
+0

这就是麻烦。这是一个有序列表。我试图把一个班级的元素放回列表中的原始位置。 – binaryorganic 2011-04-23 13:09:35

+1

接下来的问题是,我可以多次点击“删除”吗?也就是说,先删除一组元素,然后再删除一组元素?或者一次只删除一组元素? – VoteyDisciple 2011-04-23 13:22:36

+0

好的,所以......在我看来,有5个按钮,所有这些都删除了5个不同类别的列表项目。当再次点击时,这些按钮会将其各自的列表项返回到页面上,但是按其原始顺序。我对JavaScript并不擅长,所以也许我正在过度使用......基本上我只是根据指定的类而不是实际的列表内容来构建一个可过滤的列表。 – binaryorganic 2011-04-23 14:39:59

1

这里你无法for循环。

var demo; 
$('li.type').fadeOut(300, function() { 
    demo = $(this).detach(); 
}); 

$('#replace').click(function() { 
    $("ul#foo").append(demo); 
});