在.detach()之后恢复jQuery对象

在.detach()之后恢复jQuery对象,jquery,detach,Jquery,Detach,我在这件事上绕圈子。我有一份房屋清单。我想搬走不符合所选标准的房子。每栋房子都有一个李牌 我想我可以为页面上的所有li标记创建一个jQuery对象,对其进行操作,从页面中删除当前的li标记并附加新列表 但是我被卡住了 <ul id="items"> <li id="p123">Property 1</li> <li id="p456">Property 2</li> <li id="p789">Property 3</

我在这件事上绕圈子。我有一份房屋清单。我想搬走不符合所选标准的房子。每栋房子都有一个李牌

我想我可以为页面上的所有li标记创建一个jQuery对象,对其进行操作,从页面中删除当前的li标记并附加新列表

但是我被卡住了

<ul id="items">
<li id="p123">Property 1</li>
<li id="p456">Property 2</li>
<li id="p789">Property 3</li>
</ul>


var $j_object = $("li");
var clone = $j_object.clone();

$('li').detach();

itemToShow = '#p456';

// three options to restore list item
$(itemToShow).appendTo($("#items"));

$($j_object[itemToShow]).appendTo($("#items"));

$($clone[itemToShow]).appendTo($("#items"));

小提琴:

而不是从DOM中分离元素,你可能想考虑隐藏或显示它们,如果它们符合或不符合你的标准。

$('#items li').each(function() {
    if($(this).html().indexOf('Property 2') > -1) { 
        $(this).hide();
    } else {
        $(this).show();
    }
});
示例:

因此,您可以通过以下方式收集jquery对象:

var $j_object = $("li");
本质上,这是一个类似以下的数组:

['li#p123', 'li#p456', 'li#p789'] //made up of elements, not strings obviously
要从该数组中选择单个元素,必须使用。这与“查找”的作用相同,但它只搜索顶层。而find搜索集合中每个元素的子代

所以

将获取p456元素并将其附加到items

另外,请注意,$j_对象即使在附加p456之后仍然引用它


添加和删除的演示:

在chrome中使用console.logobject和console f12查看每个变量包含的内容。您要查找的jquery方法是$.find$j_object.finditemToShow.appendTo$items@slicedtoad我已经用控制台命令更新了fiddle,但我不确定如何从那里访问li标记。我可以看到对象的内容,但我不知道如何附加它们。谢谢。。。通常我会使用St/Head,但是这个项目在基础中使用块网格,CSS使显示/隐藏的结果看起来像一个坏的俄罗斯方块播放器。
$j_object.filter('#p456').appendTo('#items');