我在这个圈子里走了一圈。我有一份房子清单。我想删除不符合所选标准的房屋。每个房子都包含在li标签中。
我以为我可以在页面上创建所有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"));
答案 0 :(得分:1)
如果它们符合或不符合您的条件,您可能需要考虑隐藏/显示它们,而不是从DOM中分离元素。
$('#items li').each(function() {
if($(this).html().indexOf('Property 2') > -1) {
$(this).hide();
} else {
$(this).show();
}
});
答案 1 :(得分:1)
因此,您有一个集合的jquery对象:
var $j_object = $("li");
基本上,这是一个类似的数组:
['li#p123', 'li#p456', 'li#p789'] //made up of elements, not strings obviously
要从此数组中选择单个元素,您必须使用filter
。这与find
的作用相同,但它仅搜索顶层。而find
搜索集合中每个元素的后代。
所以,
$j_object.filter('#p456').appendTo('#items');
获取#p456
元素并将其附加到#items
。
另请注意,即使您追加$j_object
,#p456
仍会引用{{1}}。
添加和删除演示:http://jsfiddle.net/2Lyudrsj/1/