我想在这个生成的页面上保留一系列元素。棘手的部分是我需要保留父母和孩子的这些元素。
var maps = document.querySelectorAll("[id^=map]")
我想使用jQuery的过滤器从页面中删除除数组中包含的div之外的所有div。虽然我无法让它工作。我试过了:
var all = $("div").get()
$(all)
.filter(function( index ) {
return $.inArray(this, maps) === -1;
}).remove()
删除了页面中的每个元素。我认为无论孩子是否需要,它都在消除父母和他们的孩子。我尝试在函数中添加另一个过滤函数,添加一些嵌套条件,但它开始成为一个巨大的非功能性混乱。有没有更优雅的方式来做到这一点?我不一定需要使用.filter()
。
答案 0 :(得分:2)
部分原因可能是您没有从过滤器功能中返回值。
但如果我理解正确,你可以看看元素及其所有内容:
$(all)
.filter(function( index ) {
$this = $(this);
return !($this.is("[id^=map]") || $this.find("[id^=map]").length > 0);
}).remove()
答案 1 :(得分:1)
您可以尝试首先使用复杂的css选择器,如下所示:
$('div:not(div:has(.keep), div.keep)').remove();
http://jsfiddle.net/e_neko/k0bq6gzx/ 这将找到所需的元素,并在一次传递中删除其他元素。